Verständnisfrage zu C Bitweisen Operatoren

  • Hey,
    ich bin grad am lesen von dem Buch "Hacking Die Kunst des Exploits" von Jon Erickson. Auf den ersten 100 Seiten gehts um C.
    Auf der Seite 95 wird ein Beispiel zu Bitweisen Operatoren gegeben. Und da verstehe ich was nicht. Erstmal hier das gegebene etwas gekürzte Beispiel:

    Die Ausgabe ist:

    Code
    bitwise OR operator   |
    0 | 0 = 0
    0 | 1 = 1
    1 | 0 = 1
    1 | 1 = 1

    Die Ausgaben, wieso bei 0 | 0 = 0 ,usw. rauskommt, verstehe ich. Aber ich verstehe nicht, warum bit_a beim ersten Schleifendurchlauf 0 ist. Das heißt ja (0 & 2) / 2 = 0
    Ich dachte immer das solche Operatoren nur bei 1 bzw. 0 angewendet werden können?! (Was ist denn 68 | 93???) Und wieso / 2 wenn bei (0 & 2) ein Wahrheitswert (sprich 0 oder 1) rauskommt wie denn dann durch 2????
    Ich glaube ich stehe gerade mächtig auf dem Schlauch! Bitte um Aufklärung :)
    lg Jakolo

  • Schonmal daran gedacht, dass man Integrers auch in Binarys konvertieren kann? So ist 0 = 0, 2=10


    Ne hab ich nicht :rolleyes: dann doch also:

    Code
    (00 | 10) / 10

    Also:

    Code
    00
    | 10
    ------
    = 10
    
    
    10 / 10 = 01

    Da hab ich dann aber doch schon wieder irgendwo nen Fehler, weil es soll ja nicht 1 sondern 0 raus kommen.
    Ich denke ich habe da nen Rechenfehler bei den Binarys. Leider bin ich noch nicht so erfahren in dem Bereich.

  • & bedeutet das beide Werte 1 (true) sein müssen damit das Ergebnis auch 1 ist.
    Also:
    0 & 1 = 0
    0 & 0 = 0
    1 & 0 = 0
    1 & 1 = 1

    Eigentlich genauso wie in AutoIt "And"

  • Ahhh. Da war dann wohl auch mein denk Fehler. Nur die Division durch 2 verstehe ich immer noch nicht (siehe mein vorletzter Post).

  • / 2 verschiebt die Bits um einen nach rechts (alternativ könnte man auch >>1) verwenden.

    Rechnen wir das mal per Hand durch (ich zeige hier nur die letzten 4 bits):

    Und das geht so weiter.

  • Super danke! Jetzt verstehe ichs! Aber ich glaub du hast da einen Fehler. Du hast geschrieben:
    i = 1
    in Binär: i = 0000

    in Binär ist 1 doch 0001 oder?
    Naja egal jedenfalls verstehe ichs jetzt!
    lg Jakolo