multiplikation
-
Hallo Leute,
ich multiplizieren zwei ZAHLEN MIT EINANDER also 0xababab1 *128 das ergebnis sollte sein 23041235072 also 0x55D5D5880 aber ich bekomme leider als ergebins
0x5D5D5880 also ein fünf fehlt. Als ergebnis wert habe ich __int32 woran kann das liegen kann mir vielleicht jemand helfen
-
Weil INT_MAX für 32 bit 2147483647 ist und deshalb hast du eine negative zahl.

-
Hi,
danke erstamal. Kannst du mir vielleicht auch verraten, welchen Datentyp ich nehmen nmuss mit lon long hat es auch nicht funktioniert
-
Kommt auf deinen Compiler an. Beim VC ist es __int64. Versuch sonst mal _int64.
-
oder die unsigned variante...
-
beide varianten haben nicht geklappt aber wenn ich abababab1 nehme dan bekomme das ergebnis welches bei ababab1 rauskommen müsste
-
borhan schrieb:
beide varianten haben nicht geklappt aber wenn ich abababab1 nehme dan bekomme das ergebnis welches bei ababab1 rauskommen müsste
Wenn es beim ersten Fall nicht klappt, dann liegt das wahrscheinlich an der Verwendung von falschen Datentypen.
So müsste die Multiplikation aussehen:uint64_t val=0xababab1ull*128;Beim zweiten liegt wohl einfach ein Irrtum vor.