原碼、反碼、補(bǔ)碼

有符號(hào)數(shù)表示方法:原碼、反碼、補(bǔ)碼

表示方法組成:符號(hào)位、數(shù)值位

正數(shù):三者相同(0001)

負(fù)數(shù)

  • 原碼:符號(hào)位為1 (1001)
  • 反碼:除符號(hào)位,取反(1110)
  • 補(bǔ)碼:反碼加1(1111)

原碼雖然可以表示正負(fù),但是符號(hào)位無(wú)法參與運(yùn)算(計(jì)算時(shí)要先辨別符號(hào)位,再做數(shù)值位的加減運(yùn)算);為了避免計(jì)算機(jī)再編碼一套二進(jìn)制減法的運(yùn)算規(guī)則,可以通過(guò)補(bǔ)碼將減法轉(zhuǎn)化為加法運(yùn)算。減去一個(gè)數(shù)等于加上這個(gè)數(shù)的相反數(shù)(十進(jìn)制:負(fù)數(shù),二進(jìn)制:補(bǔ)碼)。

1 - 1 -> 1 + -1(負(fù)數(shù))

0001 - 1001(原碼) -> 0001 + 1111(補(bǔ)碼)

在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼來(lái)表示和存儲(chǔ)。原因在于,使用補(bǔ)碼,可以將符號(hào)位和數(shù)值域統(tǒng)一處理;同時(shí),加法和減法也可以統(tǒng)一處理。

實(shí)現(xiàn)原理:計(jì)算機(jī)二進(jìn)制運(yùn)算有位數(shù)上限(數(shù)值部分),溢出部分直接丟棄(參與符號(hào)運(yùn)算)。

反觀十進(jìn)制減法,雖然有等于加上減數(shù)的負(fù)數(shù)這一概念,但是我們?cè)谟?jì)算過(guò)程中,本質(zhì)上并沒(méi)有做什么加法運(yùn)算,不過(guò)是靠著小學(xué)時(shí)背的減法口訣表做了一次減法運(yùn)算。整個(gè)過(guò)程相當(dāng)于先判斷加減,再做運(yùn)算。當(dāng)然計(jì)算機(jī)也可以這么做,不過(guò)考慮到效率問(wèn)題,統(tǒng)一按加法處理了(正好利用了溢出這個(gè)缺陷)。

你可以理解為計(jì)算機(jī)只會(huì)加法運(yùn)算(移位),除法轉(zhuǎn)成減法,減法轉(zhuǎn)成加法,乘法轉(zhuǎn)成加法。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容