在Python中获得与Java相同的左移
具体来说,我想用这个数字:在Python中获得与Java相同的左移,java,python,bit-shift,Java,Python,Bit Shift,具体来说,我想用这个数字: x = 1452610545672622396 表演 x ^= (x << 21) // In Python I do x ^= (x << 21) & 0xffffffffffffffff 您可能会导致溢出。Java long的长度为64位,而python没有大小限制。尝试使用Long的Long包装器类。长对象也没有限制(从技术上讲,任何东西都有其限制…。您可以使用64位带符号的int,就像java一样,请参见下面的示例: fro
x = 1452610545672622396
表演
x ^= (x << 21) // In Python I do x ^= (x << 21) & 0xffffffffffffffff
您可能会导致溢出。Java long的长度为64位,而python没有大小限制。尝试使用Long的Long包装器类。长对象也没有限制(从技术上讲,任何东西都有其限制…。您可以使用64位带符号的int,就像java一样,请参见下面的示例:
from ctypes import c_longlong as ll
x = 1452610545672622396
output = ll(x^(x<<21))
print output
print output.__class__
从ctypes导入c_longlong作为ll
x=145261054567262396
输出=ll(x^(x@sun庆尧谢谢,这更清楚了…+1不客气。我刚刚格式化了代码,你可以让它更清楚:)谢谢你的回答。我想做的是规范化Python,而不是Java-所以事实上,在Python中“强制”溢出?嗨,谢谢!让值返回(不是作为字符串)的最佳方法是什么但是,只要我能用多长时间?@cogmission我编辑了我的答案,让您更清楚,正如您所看到的,输出的类别将是,这是您想要使用的。对不起,我不是真正的Python程序员,所以我只使用了ll().value
——但我想看看是否有更好的方法?
from ctypes import c_longlong as ll
x = 1452610545672622396
output = ll(x^(x<<21))
print output
print output.__class__