Binärrechner Verständnisproblem
-
Hallo,
Ich habe eine Frage zum folgenden Code eines Binärrechners und zwar konkret zu dieser Zeile:
bin[i]=((wert >> i)&1);
Wert ist ja eine Dezimalzahl und wenn diese um i-Stellen nach rechts verschoben wird? und was bedeutet hier das &1?
Bitte um Eure Hilfe!
int main() { unsigned int wert, i, bin[8]; printf("Bitte geben Sie eine Dezimalzal von 0 bis 255 ein:"); scanf("%d",&wert); for(i=0; i<8; i++) { bin[i]=((wert >> i)&1); } //Schleife für umgekehrte Ausgabe for(i=0; i<8; i++) { printf("%d",bin[7-i]); } return 0; }
-
ledi schrieb:
Wert ist ja eine Dezimalzahl und wenn diese um i-Stellen nach rechts verschoben wird?
Nein. Geshiftet wird auf Bitebene.
z.B.: 5 << 1 = 101b << 1 = 1010b = 10.ledi schrieb:
und was bedeutet hier das &1?
Das & ist ein binärer Operator. & 1 bedeutet, dass alle Stellen bis auf die erste (binär von Rechts) auf 0 gesetzt werden, die erste Stelle bleibt so wie sie ist.
-
OK!
Angenommen ich gebe für Wert die Dezimalzahl 10 ein.
Binär auf 8-Bit Ebene wäre das dann 0000 1010.Im 1. Schritt wäre dann:
for(i=0; i<8; i++) { bin[i]=((wert >> i)&1); } // bin[1] = 0000 0101 ...also alles um 1 nach rechts // &1 = 0000 0001 // 0000 0001 ... das Ergebnis im 1. Durchlauf
Habe ich das so richtig verstanden?
-
Das ist der 2. Schritt, im 1. ist i=0
-
Probiere es aus, dann wirst du deine Schleife als verkehrt herum erkennen.