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