Gast KnapsackSolver Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Hallo Community, ich besitze ein Byte, von diesem Byte benötige ich jedoch nur die ersten 4 Bit und später dann die letzten 4 Bit. Also zur Darstellung Byte: 1011 ------ 1101 (4Bit) Trennung (4Bit) Jetzt muss ich im Prinzip eine Negierung der getrennten Bit erhalten: Also erste 4 Bit (1011) Negierung dazu wäre (0100). Dieses Ergebnis muss ich nun aneinander Packen, damit meine ich immer die erste Zahl von den 4 Bit und dann die jeweilige negierte Zahl dahinter: Als Ergebnis bekomme ich dann: .....1.....0.....0.....1.....1.....0......1......0 -> Ich hoffe ihr könnt mir folgen Wie kann ich sowas in Quellcode umbauen?
Pointerman Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Moin! Informiere Dich mal zu Shift und AND. Um die ersten 4Bits zu "nullen" kannst Du sie mit 00001111 "verunden", an die ersten 4 Bits kommst Du durch shiften um 4 Bits.
Gast KnapsackSolver Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Ja also das ist schon logisch Also ich muss im Prinzip auf die ersten 4 Bit eine AND Verknüpfung mit 0000 machen... Dann bekomme ich schon mal die Gegenwerte dazu... Jedoch muss ich ja jetzt immer abwechselnd die Bits immer abwechselnd nacheinander haben
Klotzkopp Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Nacheinander in einem String oder nacheinander in einer int-Variablen oder (zeitlich) nacheinander in einem bool-Ausdruck oder was meinst du mit nacheinander?
Gast KnapsackSolver Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Also ich habe ja eben 4 Bit, von diesen 4 Bit muss dann das Gegenteil (Negierung) ermittelt werden. 4 Bit -> z.B. 0110 (Bezeichnung= BitVal) Negierung 4 Bit -> 1001 (Bezeichnung= BitNegierung) Jetzt muss abwechselnd immer folgend vorgegangen werden: 1 Bit von BitVal, dann 1 Bit von BitNegierung, dann 2 Bit von BitVal, dann 2 Bit von BitNegierung usw .... Anschließend habe ich ja ein zusammengesetztes Byte. Wie mache ich das ?
Klotzkopp Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Weißt du, wie du prüfst, ob ein bestimmtes Bit gesetzt ist? Weißt du, wie du ein bestimmtes Bit setzt? Mehr brauchst du eigentlich nicht.
Pointerman Geschrieben 22. Mai 2014 Geschrieben 22. Mai 2014 Auch hier solltest Du mit Shift und AND und OR zum Ergebnis kommen. Mit AND das benötigte Bit freistellen, an die richtige Stelle Shiften und dann mit OR in das Ergebnis übertragen.
Gast KnapsackSolver Geschrieben 6. Juni 2014 Geschrieben 6. Juni 2014 Hi Pointerman, kannst du das mal an einem Beispiel aufzeigen?
Pointerman Geschrieben 10. Juni 2014 Geschrieben 10. Juni 2014 char orig = 6; //0110 char neg = 9; //1001 char result = 0; for(int bit = 3; bit >= 0; bit--) { result = result << 1; result |= ((orig >> bit) & 1) << (bit + 1) ; result |= ((neg >> bit) & 1) << bit; }
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden