*二進位制數在記憶體中以補碼的形式儲存。
~是按位取反運算
可以通過原碼、反碼和補碼三者的含義及關係來介紹三者之間的換算關係:步驟一:1的二進位製碼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的原碼)。
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.一旦看到出現負數,那麼這個數一定是按有符號數的規則來表示的。乙個二進位制數 按位取反並加...