Python按位取反實現過程(原碼補碼)

2021-10-07 22:35:15 字數 927 閱讀 4384

對二進位制數按位取反時,輸出結果與」以為的結果「不一致。原因是計算機中數是以補碼形式進行儲存的。

不涉及原碼補碼理論,僅記錄按位取反的實現過程。

計算機中原碼補碼計算規則

計算機儲存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位...