對二進位制數按位取反時,輸出結果與」以為的結果「不一致。原因是計算機中數是以補碼形式進行儲存的。計算機中原碼補碼計算規則不涉及原碼補碼理論,僅記錄按位取反的實現過程。
計算機儲存8位,左到右為7-0,最高位為符號位,1為負,0為正;
計算機中以補碼形式儲存
正數的原碼與補碼相同
負數的補碼為原碼按位取反再加+1
負數的原為補碼-1再按位取反
原碼補碼轉換過程中,符號位不變
**舉例
x=
0b1100
print
("~x = "
.format
(~x))y=
-0b1001
print
("~y = "
.format
(~y)
)
結果:
~x =
-1101
~y =
1000
實現細節
x=0b1100為輸入(原碼)時,
計算機儲存補碼00001100,
按位取反:~(00001100)=11110011,為負數,
則輸出原碼:補碼-1再取反(符號位不變):~ (11110011-1)=~(11110010)=10001101
輸出-1101
y=-0b1001為輸入(原碼)時,
計算機儲存補碼:按位取反+1(符號位不變):~10001001+1=11110110+1=11110111
按位取反:~(11110111)=00001000,為正數
則輸出原碼:=補碼
輸出1000
python 中按原碼取反 按位取反
在python中,按位運算的結果與c c 中位運算結果不同,原因主要是c c 是按原碼來取反。而在python中,取反的運算的流程是這樣的 先獲得其二進位制 原碼 進行取反操作。將第一步的結果,當作補碼。求這個補碼的原碼,這個原碼就是輸出的結果。補 碼求原碼的過程,先減1,再取反。由於是這樣的邏輯,...
python語言按位取反 python的按位運算
華電北風吹 天津大學認知科學與計算重點實驗室 最後修改日期 2015 8 6 python提供了豐富的位運算操作符,例如按位與,按位或,按位異或,左移位,右移位和取反操作,例子 如下 a,b 45,83 bin a bin b 0b101101 0b1010011 a b,bin a b 127,0...
按位取反符
二進位制數在記憶體中以補碼的形式儲存。按位取反 二進位制每一位取反,0變1,1變0。9的計算步驟 轉二進位制 0 1001 計算補碼 0 1001 按位取反 1 0110 轉為原碼 按位取反 1 1001 末位加一 1 1010 符號位為1是負數,即 10 var x 10 在計算機中乙個整型數4位...