原碼,補碼,反碼
每天與你分享 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讀版圖書一本。趕緊來參加哦!
點擊閱讀原文,查看更多
閱讀原文
原碼,補碼,反碼