Explícame por qué el resultado del siguiente cálculo es diferente:
Pitón:
tmp = 4235635936 << 0 #4235635936JS
let tmp = 4235635936 << 0 // -59331360Pregunta: ¿cómo obtengo el mismo resultado en python que en js?
La representación binaria de ambos números es la misma. Uno está firmado, el otro no está firmado.
>>> struct.pack("<i", -59331360) b'\xe0\xacv\xfc' >>> struct.pack("<I", 4235635936) b'\xe0\xacv\xfc' >>>en JS, los operadores bit a bit y los operadores de cambio operan en entradas de 32 bits, y su ejemplo desborda la capacidad de 32 bits.
En Python no hay límite de capacidad para números enteros, por lo que obtiene el valor real.