höchstes 1 Bit in einem int finden?
-
Hallo,
gibt es in C eine Funktion um das höchste 1 Bit zu finden? Meine einzige Idee wäre die Assembleranweisung "bsr" aber dann wird mein Prog wohl mit keiner anderen CPU funktionieren. Brauche das zur Elias Gamma Codierung.
-
Hallo Sinus,
gibt es in C eine Funktion um das höchste 1 Bit zu finden?
nein, muss man in einer Schleife selbst ermitteln,
Gruß Frank
-
Hallo Sinus
Dise Schleife zeigt dir welche Bits gesetz sind und welche eben nicht.
void put_bits32(int n) { int i; for(i = 31; i>= 0; --i) { putchar( ((n>>i) & 1) + '0'); if( i % 4 == 0 && i > 0 ) putchar(' '); } }
Gruss lowbyte
-
Das könnte dich interessieren:
http://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn
-
Danke, das hat mir sehr weitergeholfen.
-
Wenn du den Microsoft-Compiler verwendest, schau dir mal an:
_BitScanReverse _BitScanReverse64
Ist natürlich kein ANSI C.