Forum: Compiler & IDEs Einzelne Bits eines Bytes in ein Array schreiben


von chrigu (Gast)


Lesenswert?

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

von Thomas (Gast)


Lesenswert?

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.

von snowman (Gast)


Lesenswert?

wenn es zeitkritisch ist und deshalb schnell gehen soll:

b[0] = a & 0b00000001;
b[1] = a & 0b00000010;
...
b[7] = a & 0b10000000;

von snowman (Gast)


Lesenswert?

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;

von chrigu (Gast)


Lesenswert?

ah super, danke!
@ snowman: wenn ich die variable a nachher nicht mehr brauche kann ich
ja das ganze direkt mit a machen, oder?

von snowman (Gast)


Lesenswert?

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).

von Thomas (Gast)


Lesenswert?

>> 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
Noch kein Account? Hier anmelden.