首頁(yè)常見問(wèn)題正文

Python培訓(xùn):按位取反怎么算

更新時(shí)間:2022-10-26 來(lái)源:黑馬程序員 瀏覽量:

IT培訓(xùn)班

  在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所示。

1666755932218_按位取反操作.jpg

  圖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。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!