Veröffentlicht 22. Mai 201411 j 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?
22. Mai 201411 j 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.
22. Mai 201411 j 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
22. Mai 201411 j Nacheinander in einem String oder nacheinander in einer int-Variablen oder (zeitlich) nacheinander in einem bool-Ausdruck oder was meinst du mit nacheinander?
22. Mai 201411 j 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 ?
22. Mai 201411 j 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.
22. Mai 201411 j 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.
10. Juni 201411 j 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; }
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.