Hallo, ich möchte alle Bits eines Bytes einzeln in ein Array schreiben. Doch leider habe ich nicht die geringste Ahnung wie man so etwas machen könnte. Ein Beispiel zur Verdeutlichung: char a=0b10101101; jetzt will ich die einzelnen Bits so in ein Array b schreiben, das jedes Array-Element ein Bit von a enthält; also am schluss sollte das so aussehen: b[0] ist gleich 1 b[1] ist gleich 0 b[2] ist gleich 1 b[3] ist gleich 1 b[4] ist gleich 0 ... b[7] ist gleich 1 Hoffe ich habe das verständlich geschildert. Hat jemand eine Idee oder ein ansatz einer Idee dazu?? Danke im Voraus, chrigu
for (int i = 0; i < 8; ++i) { if ( (a & (1 << i)) == (1 << i)) b[i] = 1; else b[i] = 0; } So in etwa wäre denkbar. Die Idee ist, jedes Bit einzeln abzufragen und dein Array entsprechend zu setzen.
wenn es zeitkritisch ist und deshalb schnell gehen soll: b[0] = a & 0b00000001; b[1] = a & 0b00000010; ... b[7] = a & 0b10000000;
oops :( ...war wohl ein bisschen zu früh feierabend ;) also richtig: x = a; b[0] = x & 1; x >> 1; // b[1] = x & 1; x >> 1; ... b[7] = x & 1;
ah super, danke! @ snowman: wenn ich die variable a nachher nicht mehr brauche kann ich ja das ganze direkt mit a machen, oder?
ja, das kannst du gleich mit a machen, wenn du die nachher nicht mehr bauchst. noch zwei anmerkungen: 1. lezte zeile kann noch kürzer heissen: b[7] = x; 2. und mit x >> 1; meine ich eine bitweise rotation nach rechts, so dass sich x dabei ändert (ich weiss den syntax nicht mehr genau, vielleicht heisst er auch ror(x) oder so ähnlich).
>> ist keine Rotation sondern ein Shift, aber das ist hier egal.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.