我正在學習python中的按位運算符,因此我試圖在shell中做一些實驗。我想這樣做有8位數字位操作,並且似乎正常工作,但如果我嘗試使用16位數字出現這種情況:如何在python shell中對16位二進制數執行按位操作感到困惑
a = 1011110110011001
>>> a
1011110110011001
>>> b = 1100001110000101
>>> b
1100001110000101
:
>>> b = 0010000000000000
>>> b
549755813888
如果我嘗試更大數量的輸出起初似乎正常
但是,當我應用一個按位運算符,例如OR |,
然後我再次得到一個十進制輸出。
>>> a | b
1125874135965693
我覺得這很混亂。二元運算符的結果不是二進制文件嗎?如果是的話,轉換髮生在哪裏?最後,爲什麼只有在使用16位二進制文件進行嘗試時纔會發生這種情況?
編輯:我得到以下嘗試8位時:
>>> c = 00000001
>>> d = 10000000
>>> c | d
10000001
這很有道理,但解釋器會自動將8位識別爲不帶'0b'前綴的二進制文件嗎? – Sifu
您可能想發佈一個您認爲正在工作的8位值的示例。 – chepner
我會更新問題以包含示例 – Sifu