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.
:
Verschoben durch Admin
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
unsigned int a = 60; /* 60 = 0011 1100 */ unsigned int b = 13; /* 13 = 0000 1101 */ unsigned int c = 0; c = a & b; /* 12 = 0000 1100 */ c = a && b; /* c = 0 */
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.
@ev so: wieso ist bei dir zum Schluß c 0? ich würde auf 1 tippen...
bit verknüpfung 0001 & 0010 ------ 0000 logische verknüpfung 1 && 2 = 1, da keiner der Werte 0 ist 1 && 0 = 0, da einer der Werte 0 ist
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.