[英]Bitwise XOR operator not working in python
我想這樣做:
打印17593028247552 ^ 909522486
結果必須是67450422 (在javascript中),但我得到17592253494838L
請幫我 ! 提前致謝 :)
Python 2的long
類型(或Python 3中的int
)可以根據需要增長,但看起來你想要32位結果。
您只需要屏蔽結果,這樣您只能獲得結果的低32位。 我想,既然你在Python 2上,你也應該將它從long
轉換為int
。
>>> int((17593028247552 ^ 909522486 ) & 0xffffffff)
67450422
我只使用Windows計算器:
100000000000000110010001100110000000000000000 = 17593028247552d
000000000000000110110001101100011011000110110 = 909522486d
100000000000000000100000001010011011000110110 = 17592253494838d
看起來JavaScript是錯誤的。 在進行XOR之前,它可能會縮小到32位。 Python是整數上的任意精度。
編輯:正如另一個答案所指出的那樣,如果你還在使用Python 2(不要這樣做!),那么長期就是任意精度; int的精度可以變化,但通常是64位。 在Python 3中,只有一個整數類型,它始終是任意精度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.