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:
#include <stdio.h>
int mein() {
int i, bit_a, bit_b;
printf("bitwise OR operator |\n");
for(i=0; i<4; i++){
bit_a = (i & 2) /2;
bit_b = (i & 1);
printf("%d | %d = %d\n", bit_a, bit_b, bit_a | bit_b);
}
}
Alles anzeigen
Die Ausgabe ist:
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