更新時間:2022-10-26 來源:黑馬程序員 瀏覽量:
在Python中,按位取反就是將二進制位的每一位進行取反,0取反為1,1取反為0。例如,將9按位取反后的結(jié)果為-10,接下來,帶大家一起分析一下9按位取反后為什么結(jié)果為-10,具體如下:
(1)將9轉(zhuǎn)換為二進制變成00001001。因為正數(shù)的原碼=反碼=補碼,真正存儲的時候,存儲的就是00001001;
(2)對9的補碼00001001進行取反操作,取反后結(jié)果為11110110,這是補碼;
(3)將補碼轉(zhuǎn)為原碼。轉(zhuǎn)換的時候,符號位不變,其他位取反,然后+1得到原碼,結(jié)果為10001010,即-10。
具體過程如圖2-16所示。
圖2-16 按位取反操作
從圖2-16中可以看出,當(dāng)將00001001按位取反后,結(jié)果為10001010。為了驗證結(jié)果是否正確,接下來,在代碼中進行測試,具體如下:
>>> a = 9 >>> ~a -10 >>> bin(~a) '-0b1010'
從上述代碼可以看出,9按位取反后,結(jié)果為-10,而-10轉(zhuǎn)換為二進制數(shù)就是10001010。