Rechnen mit Exponenten
-
Hallo, ich möchte für ein Programm welches Dualzahle in Dezimalzahlen umrechnet die entsprechenden exponenten verwenden (z.B 2^1) doch irgendwie funktioniert das mit meinem jetzigen code nicht.
hie ein Auszug der Schleife in der die Berechnung erfolgen solldo{ ziff = dualz % 10; cout << ziff * ((2^position)) << endl; dualz = dualz / 10; position++; }while (position <= 16);als ergebnis erscheint bei der Zahl 101 nur eine 2 und nicht eine 4 0 1
-
ja kann auch nicht.
^ heisst in C++ nicht hoch sondern XOR...
-
Alsooooo....
Sieh dir mal die Funktion pow() aus dem <cmath> Header an.
Potenz pow(Basis, Exponent);Die ist übrigens nur effizient, wenn es sich um größere Potenzen und nicht Quadrierungen handelt.
-
Bei Zweierpotenzen kann er gleich shiften.
-
314159265358979 schrieb:
Bei Zweierpotenzen kann er gleich shiften.
Jau, dann shifte mal fleissig 3.141592653
-
DocShoe schrieb:
Jau, dann shifte mal fleissig 3.141592653
Ja, addieren wäre richtig.
#include <cstdio> float shl (float v, unsigned shift) { static const unsigned expMask = 0x7F800000; static const unsigned expShift = 23; unsigned result = ((*(unsigned*) &v) & ~expMask) | ((((*(unsigned*) &v) & expMask) + (shift << expShift)) & expMask); return *(float*) &result; } int main (void) { float d = 3.14159; std::printf ("2 * %f = %f", d, shl (d, 1)); }