計算機按位取反

2021-08-08 02:37:26 字數 1508 閱讀 8465

*二進位制數在記憶體中以補碼的形式儲存。

~是按位取反運算

可以通過原碼、反碼和補碼三者的含義及關係來介紹三者之間的換算關係:

1、原碼

原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值。

比如如果是8位二進位制:

[+1]原 = 0000 0001

[-1]原 = 1000 0001

第一位是符號位。

2、反碼

正數的反碼是其本身

負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.

[+1] = [00000001]原 = [00000001]反

[-1] = [10000001]原 = [11111110]反

第一位是符號位。

3、補碼

正數的補碼就是其本身

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補

第一位是符號位。

注:補碼的補碼等於原碼,如:-1的補碼為11111111,則11111111的反碼為10000000

補碼為10000001(-1的原碼)。

步驟一:1的二進位製碼

0000 0001

步驟二:1的補碼

0000 0001

步驟三:按位取反

1111 1110

步驟四:求其原碼(負數的補碼求其原碼 是-1取反)

補碼-1為

1111 1101

然後取反

1000 0010 為-2

步驟一:2的二進位制原碼

1000 0010

步驟二:2的補碼(負數補碼為取反+1)

取反 1111 1101

先+1

1111 1110

步驟三:按位取反(正數的補碼還是其本身 ,補碼->本身 不變)

0000 0001

其原碼

0000 0001(為1)

實際運算舉例

~5 簡單:加1符號位變 變-6

~-5

簡單:負數就是加1 符號位變 4

在按位取反的過程中

注意計算機儲存的是每個數的補碼,所以先求其補碼,然後全部位按位取反 再求其原碼

再求其原碼注意現在是正數還是負數

正數的反碼是其本身

正數的補碼是其本身

負數的反碼是除符號位其他全部按位取反

負數的補碼是反碼+1

最後總結 求補碼,按位取反,求原碼為結果

最後總結 求補碼,按位取反,求原碼為結果

最後總結 求補碼,按位取反,求原碼為結果

符號位(變化) +其他全部變化

python 中按原碼取反 按位取反

在python中,按位運算的結果與c c 中位運算結果不同,原因主要是c c 是按原碼來取反。而在python中,取反的運算的流程是這樣的 先獲得其二進位制 原碼 進行取反操作。將第一步的結果,當作補碼。求這個補碼的原碼,這個原碼就是輸出的結果。補 碼求原碼的過程,先減1,再取反。由於是這樣的邏輯,...

按位取反符

二進位制數在記憶體中以補碼的形式儲存。按位取反 二進位制每一位取反,0變1,1變0。9的計算步驟 轉二進位制 0 1001 計算補碼 0 1001 按位取反 1 0110 轉為原碼 按位取反 1 1001 末位加一 1 1010 符號位為1是負數,即 10 var x 10 在計算機中乙個整型數4位...

按位取反 100 101

首先看等號左邊 100 的二進位制表示為 0110 0100 按位取反的意思就是每一位取反,0變1,1變0 所以 100 的二進位制表示為 1001 1011 所以等號左邊 1001 1011 再看右邊 101.一旦看到出現負數,那麼這個數一定是按有符號數的規則來表示的。乙個二進位制數 按位取反並加...