Python 練習(xí)實(shí)例55
python 練習(xí)實(shí)例55
題目:學(xué)習(xí)使用按位取反~。
說(shuō)明:
二進(jìn)制數(shù)在內(nèi)存中以補(bǔ)碼的形式存儲(chǔ)。
按位取反:二進(jìn)制每一位取反,0 變 1,1 變 0。
最高位為符號(hào)位,正數(shù)的符號(hào)位為 0,負(fù)數(shù)為 1。
對(duì)正數(shù)來(lái)說(shuō),最高位為 0,其余各位代表數(shù)值本身(以二進(jìn)制表示),如 +42 的補(bǔ)碼為 00101010。
對(duì)負(fù)數(shù)而言,把該數(shù)絕對(duì)值的補(bǔ)碼按位取反,然后對(duì)整個(gè)數(shù)加 1,即得該數(shù)的補(bǔ)碼。如 -42 的補(bǔ)碼為 11010110(00101010 按位取反11010101+1 即 11010110)。
~9 的計(jì)算步驟:
轉(zhuǎn)二進(jìn)制:0 1001 計(jì)算補(bǔ)碼:0 1001 按位取反:1 0110
轉(zhuǎn)為原碼:
按位取反:1 1001 末位加 1:1 1010 符號(hào)位為 1 是負(fù)數(shù),即 -10
實(shí)例:
#!/usr/bin/python # -*- coding: utf-8 -*- a = 7 b = ~a c = -7 d = ~c print ('變量 a 取反結(jié)果為: %d' % b) print ('變量 c 取反結(jié)果為: %d' % d)
以上實(shí)例中輸出結(jié)果為:
變量 a 取反結(jié)果為: -8 變量 c 取反結(jié)果為: 6
說(shuō)明:
-
~7,對(duì) 7 進(jìn)行取反,7 的補(bǔ)碼是 00000111 對(duì)補(bǔ)碼取反得到 11111000,最高位 1 為符號(hào)位,表示負(fù)數(shù),所以該補(bǔ)碼對(duì)應(yīng)的整數(shù)為 -8。
-
~-7 對(duì) -7 進(jìn)行取反,-7 的補(bǔ)碼是 11111001 對(duì)補(bǔ)碼取反得到 00000110,最高位 0 為符號(hào)位,表示正數(shù),所以補(bǔ)碼對(duì)應(yīng)的整數(shù)為 6。