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.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage