1. 程式人生 > >原碼,補碼,反碼

原碼,補碼,反碼

機器數

點擊關註 異步圖書,置頂公眾號

每天與你分享 IT好書 技術幹貨 職場知識

技術分享圖片

機器數

一個數在計算機中的二進制表示形式, 叫做這個數的機器數。機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數為0, 負數為1.

真值

因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 -3 而不是形式值131(10000011轉換成十進制等於131)。所以,為區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值。

原碼, 反碼, 補碼基本概念

原碼

原碼(true form)是一種計算機中對數字的二進制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其余位表示數值的大小。

原碼的優點

簡單直觀;例如,我們用8位二進制表示一個數,+11的原碼為00001011,-11的原碼就是10001011

原碼的缺點

原碼不能直接參加運算,可能會出錯。例如數學上,1+(-1)=0,而在二進制中00000001+10000001=10000010,換算成十進制為-2。顯然出錯了。

補碼

在計算機系統中,數值一律用補碼來表示和存儲。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬件電路。

補碼的特性

一個負整數(或原碼)與其補數(或補碼)相加,和為模。
對一個整數的補碼再求補碼,等於該整數自身。
補碼的正零與負零表示方法相同。
反碼
正數的反碼與其原碼相同;負數的反碼是對其原碼除符號位外逐位取反。

原碼, 反碼, 補碼表示方法

原碼

原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值.

反碼

正數的反碼是其本身

負數的反碼是在其原碼的基礎上, 符號位不變,其余各個位取反.

補碼

正數的補碼就是其本身

負數的補碼是在其原碼的基礎上, 符號位不變, 其余各位取反, 最後+1. (即在反碼的基礎上+1)


[+1] = [00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補


總結:

正數的原碼,反碼,補碼相同。

負數的反碼是在其原碼的基礎上, 符號位不變,其余各個位取反.

負數的補碼是在其原碼的基礎上, 符號位不變, 其余各位取反, 末位+1.


本文摘自異步社區,作者:兄弟,文章名稱《原碼,補碼,反碼》


技術分享圖片

推薦閱讀

2018年4月新書書單

異步圖書最全Python書單

一份程序員必備的算法書單

第一本Python神經網絡編程圖書


技術分享圖片

長按二維碼,可以關註我們喲

每天與你分享IT好文。


在“異步圖書”後臺回復“關註”,即可免費獲得2000門在線視頻課程;推薦朋友關註根據提示獲取贈書鏈接,免費得異步e讀版圖書一本。趕緊來參加哦!

點擊閱讀原文,查看更多

閱讀原文


原碼,補碼,反碼