Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中获得与Java相同的左移_Java_Python_Bit Shift - Fatal编程技术网

在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__