Frage zu Programmieren in C von Kernighan

#1364753
Lesenswert?

Ich habe gerade das Buch Programmieren in C. zweite Ausgabe. Dabei 
verstehe ich einen Zusammenhang nicht.

Auf Seite 48 Mitte steht beschrieben zum Thema Bit Manipulation.

Hat beispielsweise x den Wert 1 und y den Wert 2,
dann ist x & y gleich Null
aber x && y ist Eins.


Das verstehe ich nicht.
Persönliche Seite #1364771
Lesenswert?

der & Operator führt die Bit Operation für jedes Bit einzeln durch:
Also Bit0(1.Wert) UND Bit0(2. Wert)
Bit1(1.Wert) UND Bit10(2. Wert)
Bit2(1.Wert) UND Bit2(2. Wert)
...

Der && Operator prüft zuerst mal ob beide Werte jeweils wahr sind (alles 
ungleich 0 ist wahr)
Und dann verknüpft der diese beide wahr oder falsch Werte mit einem UND
#1364777
Lesenswert?

x und y sind binär geschrieben (das ist kein Standard-C, sondern 
gcc-Erweiterung, aber hier hilfreich:
1
x = dezimal 1 = binär 0b00000001
2
y = dezimal 2 = binär 0b00000010

Mit & wird binär ver-UND-et.
Das ergibt im Ergebnis immer dort eine eins, wo an
entsprechender Stelle in beiden Ioeranden (x und y) eine
1 steht.
Das ist hier an keiner Stelle der Fall, also:
1
x = dezimal 1 = binär 0b00000001
2
y = dezimal 2 = binär 0b00000010
3
x&y           = binär 0b00000000

Mit einem && wird dagegen geprüft, ob beide Operanden ungleich 0 sind.
Falls ja, ist das Ergebnis 1, sonst 0.
Hier sind beide ungleich 0, also ist das Ergebnsi 1.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren