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