Frage zu Programmieren in C von Kernighan

OP #1364753
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
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
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.