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? Zitieren
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. Zitieren
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 Zitieren
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? Zitieren
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 ? Zitieren
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. Zitieren
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. Zitieren
Gast KnapsackSolver Geschrieben 6. Juni 2014 Geschrieben 6. Juni 2014 Hi Pointerman, kannst du das mal an einem Beispiel aufzeigen? Zitieren
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; } Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.