負數在計算機中存在形式

計算機擅長做加法運算,對於減法運算也是以加法的形式存在。比如,12-8,計算機會表達成12+(-8),那麼問題就來了,(-8)是如何標示的在計算機中?

原碼、反碼和補碼的概念

首先要明白幾個概念:
原碼:比如12的原碼(在八位機中)是,0000 1100,(-8)的原碼是,1000 1000,其中首位是符號位,0代表正數,首位1代表的是負數。

反碼:正數的反碼就是它本身;負數的反碼是保留符號位,其他位取反。(-8)的反碼就是1111 0111。

補碼:補碼就是在反碼的基礎上加1。(-8)的補碼是,1111 1000.

計算機爲了計算容易便把(-8)以補碼的方式存儲,1111 1000.

舉例1:12+(-8)= 4;
0000 1100 + 1111 1000 = 0000 0100 ,又符號位是0是正數,則正數的補碼和原碼一致,即4

舉例2: 4+(-8)= -4;
0000 0100 + 1111 1000 = 1111 1100 ,又符號位是1是負數,則負數要轉化爲原碼纔是真正的數值。注意這裏補碼轉原碼的步驟是和原碼轉補碼是一樣的。即符號位不變,其餘位取反然後加1.
1111 1100的原碼即 1000 0100 ,(-4).

數據存儲範圍

對於一個8位機,無符號數範圍是 0~255;有符號數的範圍是 -128~127。
127,即 0111 1111;
-128,即 1000 0000; 注意由於是有符號數,所以這裏的127和-128均是以補碼的形式存在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章