Wie kann ich in C an die einzelnen bits eines Integers herankommen? Ich will damit überprüfen, ob diese gesetzt sind oder nicht. Ich benötige das z.B. beim modularen Potenzieren (fragt nicht warum *gg). Wenn man dem int a z.B. 13 zuweist, weiß ich, durch
oder so, dann müssten doch die bits des integers folgendermaßen gesetzt sein:
Und wie kann man jetzt die einzelnen bits auslesen, z.B. überprüfen, ob bit x eine 1 ist oder nicht?
Meine zweite Frage knüpft an diese an:
Wie ist es möglich, die "Bitlänge" der Zahl zu bestimmten? Könnte man eventuell eine Fkt schreiben, die die Bits auf gesetzt oder nicht überprüft und sich jedes mal die höchste Stelle, wo eine 1 vorkam, merkt? oder gehts auch einfacher? Irgendwelche Tricks? Bei der obrigen Zahl wäre es ja die Länge 4 (Bit 0-3), da das 3. Bit das letzte is, welches gesetzt ist. Die Funktion "sizeof(a)" gibt ja nur die belegten bytes an, oder?
Code:
int a=13;
Code:
0000 0000 0000 1101
Meine zweite Frage knüpft an diese an:
Wie ist es möglich, die "Bitlänge" der Zahl zu bestimmten? Könnte man eventuell eine Fkt schreiben, die die Bits auf gesetzt oder nicht überprüft und sich jedes mal die höchste Stelle, wo eine 1 vorkam, merkt? oder gehts auch einfacher? Irgendwelche Tricks? Bei der obrigen Zahl wäre es ja die Länge 4 (Bit 0-3), da das 3. Bit das letzte is, welches gesetzt ist. Die Funktion "sizeof(a)" gibt ja nur die belegten bytes an, oder?