Warum liefert die bitweise Linksverschiebung in Python und Java unterschiedliche Ergebnisse?
Ich versuche, einige Funktionen von einer Java-App nach Python zu portieren.
n Ja
System.out.println(155 << 24);
Returns: -1694498816
In Python:
print(155 << 24)
Returns 2600468480
Viele andere bitweise Operationen haben in beiden Sprachen auf die gleiche Weise funktioniert. Warum führen diese beiden Operationen zu unterschiedlichen Ergebnissen?
EDIT: Ich versuche, eine Funktion in Python zu erstellen, um zu replizieren, wie der linke Shift-Operator in Java funktioniert. Etwas in der Art von:
def lshift(val, n):
return (int(val) << n) - 0x100000000
Aber dies scheint nicht richtig zu sein, da (glaube ich) alle Zahlen negativ werden?
EDIT2: Einige Stunden später habe ich entschieden, dass es wahrscheinlich nicht die beste Idee ist, Python für diesen Job zu verwenden, und nehme an der Java-Anwendung teil und verwende sie als Mikrodienst für die vorhandene Python-App.