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.
Gast
#1364767
bit und byteweiser vergleich?
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
Gast
#1364773
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 | |
2 | |
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 | |
2 | |
3 | |
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...
Gast
#1364782
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.