[英]python - bit shift on positive integer producing negative integer … how could this happen?
我已經創建了一個Python 3 BitSet類,我用它來從0開始的整數域上進行快速設置操作。
我正在使用BitSet在基於圖形的算法中遇到一個錯誤。 我的調試代碼
print(v)
print(v == 63)
print(1 << v)
產生以下輸出(注意最后一行的符號):
63
True
-9223372036854775808
當我在翻譯中嘗試以下內容時,我得到了正在尋找的正面答案:
>>> 1 << 63
9223372036854775808
>>> x = 1 << 61 | 1 << 63
>>> x
11529215046068469760
>>> bin(x)
'0b1010000000000000000000000000000000000000000000000000000000000000'
一個線索是,此代碼產生錯誤的第一個位置接近我的系統的sys.maxsize(9223372036854775807,或2 ^ 63 - 1)。
有什么可能導致這種行為的想法?
到目前為止我嘗試過的
我試圖在整數溢出等上讀取所有可能的內容。我不會認為Python 3(使用它的任意長度整數)會產生這種錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.