計(jì)算機(jī)的加減乘除(原碼反碼補(bǔ)碼)

計(jì)算機(jī)對(duì)數(shù)的操作,以二進(jìn)制為基,因?yàn)殡娮釉荒鼙磉_(dá)0/1,開(kāi)或關(guān)這兩種狀態(tài),如果學(xué)過(guò)模電和數(shù)電,對(duì)此的理解會(huì)更深。
比如說(shuō)十進(jìn)制9,在計(jì)算機(jī)里不可能單獨(dú)記個(gè)9,而是記錄成0000 1001,第一位符號(hào)位,0表示正數(shù)。但是-9,在計(jì)算機(jī)里記得就不是1000 1001(原碼),而是1111 0111(補(bǔ)碼)。
1、 為什么不用原碼記錄負(fù)數(shù)?
計(jì)算機(jī)只有加法,沒(méi)有減法,如果用原碼記錄負(fù)數(shù),則9 + (-9) = 0000 1001 + 1000 1001 = 1001 0010,得到的結(jié)果肯定不對(duì)
2、 為什么不用反碼記錄負(fù)數(shù)?
如果用反碼記錄負(fù)數(shù),則9 + (-9) = 0000 1001 + 1111 0110 = 1111 1111,再反碼,結(jié)果等于1000 0000,這個(gè)結(jié)果其實(shí)是對(duì)的,相當(dāng)于等于-0,和0000 0000是一樣的,它表示+0.(因?yàn)槎?1都等于0000 0001),但這樣就浪費(fèi)了一個(gè)編碼,明明0只需要1個(gè)數(shù)表示就行,可以把1000 0000表示為-128,豈不妙哉。
3、 采用補(bǔ)碼為什么就能解決這個(gè)問(wèn)題?
如果用補(bǔ)碼記錄負(fù)數(shù),則9 + (-9) = 0000 1001 + 1111 0110 = 1111 1111,再+1,等于0000 0000,剛好為0

總結(jié):計(jì)算機(jī)中只有加法,沒(méi)有減法,需要用補(bǔ)碼來(lái)表示負(fù)數(shù),減法的表示方法變成了:加一個(gè)負(fù)數(shù)。

此外,沒(méi)有乘法和除法,那么怎么表示乘除呢?
移位,左移乘2,右移除2
比如3 * 5 = (0000 0010 + 0000 0001) * 0000 0101,第一項(xiàng)是25,等于0000 0101往左移一位=0000 1010,第二項(xiàng)是15=0000 0101,二者加起來(lái)=0000 1111=15
除法類似。

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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