Hallo!
Ich stehe gerade vor folgendem Problem
Ich will zwei 32 bit unsigned integer zahlen binär miteinander mutliplizieren.
natürlich gibt es hier einen überlauf und man verliert bits.
(Ich verwende lediglich C, kein C++)
um keinen bit zu verlieren müsste ich eine 64 bit variable verwenden.
Durch die Verwendung von "unsigned long long" hab ich aber das problem, dass die ersten 32 bit ident zu den zweiten 32 bit sind
also:
Binäre darstellung
uint32 a = 00010011001100110011001101000000
uint32 b = 00010011001100110011001101000000
bei
unsigned long long iTmpA = a;
bekomme ich wieder
0001001100110011001100110100000000010011001100110011001101000000
wenn ich nun:
iTmpA & 0xFFFFFFFF anwende, bekomme ich leider das selbe ergebnis - also
0001001100110011001100110100000000010011001100110011001101000000
ich hoffe ich hab das problem ausreichend beschrieben.
Wie kann ich dem ganzen habhaft werden?
lg
Shadow
Ich stehe gerade vor folgendem Problem
Ich will zwei 32 bit unsigned integer zahlen binär miteinander mutliplizieren.
natürlich gibt es hier einen überlauf und man verliert bits.
(Ich verwende lediglich C, kein C++)
um keinen bit zu verlieren müsste ich eine 64 bit variable verwenden.
Durch die Verwendung von "unsigned long long" hab ich aber das problem, dass die ersten 32 bit ident zu den zweiten 32 bit sind
also:
Binäre darstellung
uint32 a = 00010011001100110011001101000000
uint32 b = 00010011001100110011001101000000
bei
unsigned long long iTmpA = a;
bekomme ich wieder
0001001100110011001100110100000000010011001100110011001101000000
wenn ich nun:
iTmpA & 0xFFFFFFFF anwende, bekomme ich leider das selbe ergebnis - also
0001001100110011001100110100000000010011001100110011001101000000
ich hoffe ich hab das problem ausreichend beschrieben.
Wie kann ich dem ganzen habhaft werden?
lg
Shadow