原碼、反碼、補碼
計算機通常用補碼表示整數(shù)
公式:負數(shù)(x)
(x)原碼+(x)補碼=0,進位丟棄.
為了簡單起見,我們用1個字節(jié)來表示一個整數(shù)。
原碼
將最高位作為符號位(以0代表正,1代表負),其余各位代表數(shù)值本身的絕對值(以二進制表示)。
+7的原碼為: 00000111
-7的原碼為: 10000111
問題:
+0的原碼為:00000000
-0的原碼為: 10000000
反碼:
一個數(shù)如果為正,則它的反碼與原碼相同;一個數(shù)如果為負,則符號位為1,其余各位是對原碼取反。
+7的反碼為:00000111
-7的反碼為: 11111000
問題:
+0的反碼為:00000000
-0的反碼為:11111111
補碼:
一個數(shù)如果為正,則它的原碼、反碼、補碼相同;
一個數(shù)如果為負,則符號位為1,其余各位是對原碼取反,然后整個數(shù)加1。
+7的補碼為:00000111
-7的補碼為:
第一步:由-7原碼得到-7的反碼,得到11111000,第二步,反碼+1=11111001
即負數(shù)補碼公式:
補碼=反碼+1
問題:0的補碼表示:
+0的補碼: 00000000
-0的補碼:
第一步:得到-0(10000000)的反碼:11111111
第二步:反碼(11111111)+1 = 1 00000000
第三步:進位1被丟棄
對于有模運算來講,減一個數(shù)等于加上該數(shù)對模的補數(shù)。補碼就是按補數(shù)概念對數(shù)據(jù)進行編碼的。計算機引入補碼后,減法可轉(zhuǎn)換為加法,方便運算