簡體   English   中英

Bitwise XOR運算符不在python中工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM