計算機中的原碼/反碼/補碼
阿新 • • 發佈:2019-01-01
為什麼要學習原碼、反碼、補碼呢?先來認識下計算機中的原碼、反碼以及補碼。
原碼
就是二進位制定點表示法,即最高位為符號位,“0“表示正,“1“表示負,其餘位表示數值的大小。
通過一個位元組,也就是8個二進位制位來表示7和-7:
7: 00000111(符號位0表示正數)
-7:10000111(符號位1表示負數)
反碼
正數反碼與其原碼相同,負數對其原碼逐位取反,但符號位除外;
7的反碼: 00000111
-7的反碼:11111000
補碼
正數反碼與其原碼相同,負數是在其反碼的末位加一;
7的反碼: 00000111
-7的反碼:11111001
補碼相加
7+(-7): 0 0000111 1 1111001 10 0000000 由於一個位元組是八位,捨去開頭的1. 0 0000000 得到相加結果為0.
小結
正數的原反補碼均相同。
負數根據原碼求反碼(除符號位外逐位取反)、再根據反碼求其補碼(末位加一)。
負數根據補碼求反碼(末位減一)、再根據反碼求其原碼(除符號位外逐位取反)。
計算機中的加減即是補碼之間的加法操作。
關於計算機如何以加法實現減法操作,看到一篇非常好的博文,共同學習,在此附上鍊接 http://www.cnblogs.com/zhangziqiu/ ,並向大佬致敬。