1. 程式人生 > >計算機中的原碼/反碼/補碼

計算機中的原碼/反碼/補碼

為什麼要學習原碼、反碼、補碼呢?先來認識下計算機中的原碼、反碼以及補碼。

原碼

就是二進位制定點表示法,即最高位為符號位,“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/ ,並向大佬致敬。