Exponent zu Basis 2 ermitteln
-
Hallo,
kann mir jemand sagen wie ich aus einer Bitmaske in der nur ein Bit gesetzt sein kann, die Wertigkeit ermitteln kann.
D.h. ich möchte den Exponent einer Zahl zur Basis 2 errechnen.
Gibt´s hierfür eine Funktion, aber nicht mit for- oder while- Schleifen und Bitverschieberei.
Ich hab´ da noch was im Kopf mit zwei Logaritmen zur verschiedenen Basis und die durcheinander dividieren oder so???!!!Vielen Dank!
fujitsufan
-
Das habe ich in einem anderen Forum gefunden (also ungetestet!):
double x; x = log(8)/log(2); //Logarithmus 8 zur Basis 2 printf("%f\n",x);EDIT: Scheint zu funktionieren.
-
fujitsufan schrieb:
Hallo,
Gibt´s hierfür eine Funktion, aber nicht mit for- oder while- Schleifen und Bitverschieberei.Und warum keine Bitverschieberei? Das ist extrem viel schneller...
-
Für Bitmasken würd' ich keine Floating-Point-Ops verwenden. Allerdings bist du dann bei Bitscheiberei angelangt

Eine schöne Sammlung findet man hier: http://www-graphics.stanford.edu/~seander/bithacks.html#IntegerLogObvious