000
15.06.2003, 21:12 Uhr
~0xdeadbeef
Gast
|
Moin,
Ich hab grad mal C-Golf mit den ror- und rol-Funktionen, die virtual vor einiger Zeit mal als Rätsel gestellt hat gespielt. Die Funktion sollte eine gegebene Zahl um eine gegebene Anzahl bits nach links bzw. Rechts verschieben. Der Code sieht so aus:
C++: |
ror(a,b){return a<<b|a>>32-b;} rol(a,b){return a>>b|a<<32-b;}
void print_bitwise(int a) { int i=32; while(i--) putchar(a>>i&1|48); printf("\n"); }
main() { int a = 0xdeadbeef; print_bitwise(a); print_bitwise(ror(a,2)); print_bitwise(rol(a,2)); }
|
Das interessante ist - rol funktioniert, ror nicht. Die Ausgabe des Programms ist:
Code: |
11011110101011011011111011101111 11111111111111111111111111111111 11110111101010110110111110111011
|
Ich würde lügen, wenn ich sagen würde, dass ich wüsste, woran das liegt. Sieht jemand von euch meinen Fehler? |