相關(guān)推薦
您可能對(duì)下面課程感興趣
微機(jī)原理與接口教程

120小節(jié)已有116535人學(xué)過

原碼、反碼、補(bǔ)碼的換算
發(fā)布時(shí)間:2023-07-20 09:18 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 快樂小女 閱讀: 2106

C語言中,原碼,補(bǔ)碼和反碼怎么換算?

原碼、反碼、補(bǔ)碼都是有符號(hào)定點(diǎn)數(shù)的表示方法。

一個(gè)有符號(hào)定點(diǎn)數(shù)的最高位為符號(hào)位,0是正,1是副。

以下都以8位整數(shù)為例,

原碼就是這個(gè)數(shù)本身的二進(jìn)制形式。

例如

1000001 就是-1

0000001 就是+1

正數(shù)的反碼和補(bǔ)碼都是和原碼相同。

負(fù)數(shù)的反碼是將其原碼除符號(hào)位之外的各位求反

[-3]=[10000011]=11111100

負(fù)數(shù)的補(bǔ)碼是將其原碼除符號(hào)位之外的各位求反之后在末位再加1。

[-3]補(bǔ)=[10000011]補(bǔ)=11111101

一個(gè)數(shù)和它的補(bǔ)碼是可逆的。

為什么要設(shè)立補(bǔ)碼呢?

第一是為了能讓計(jì)算機(jī)執(zhí)行減法:

[a-b]補(bǔ)=a補(bǔ)+-b)補(bǔ)

第二個(gè)原因是為了統(tǒng)一正0和負(fù)0

正零:00000000

負(fù)零:10000000

這兩個(gè)數(shù)其實(shí)都是0,但他們的原碼卻有不同的表示。

但是他們的補(bǔ)碼是一樣的,都是00000000

特別注意,如果+1之后有進(jìn)位的,要一直往前進(jìn)位,包括符號(hào)位。ㄟ@和反碼是不同的。

[10000000]補(bǔ)

=[10000000]+1

=11111111+1

=(1)00000000

=00000000(最高位溢出了,符號(hào)位變成了0

有人會(huì)問

10000000這個(gè)補(bǔ)碼表示的哪個(gè)數(shù)的補(bǔ)碼呢?

其實(shí)這是一個(gè)規(guī)定,這個(gè)數(shù)表示的是-128

所以n位補(bǔ)碼能表示的范圍是

-2^(n-1)2^(n-1)-1

n位原碼能表示的數(shù)多一個(gè)

微機(jī)原理與接口教程
我要自學(xué)網(wǎng)商城 ¥30 元
進(jìn)入購買
文章評(píng)論
0 條評(píng)論 按熱度排序 按時(shí)間排序 /350
添加表情
遵守中華人民共和國的各項(xiàng)道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對(duì)下面課程感興趣
微機(jī)原理與接口教程

120小節(jié)已有116535人學(xué)過

分類選擇:
電腦辦公 平面設(shè)計(jì) 室內(nèi)設(shè)計(jì) 室外設(shè)計(jì) 機(jī)械設(shè)計(jì) 工業(yè)自動(dòng)化 影視動(dòng)畫 程序開發(fā) 網(wǎng)頁設(shè)計(jì) 會(huì)計(jì)課程 興趣成長 AIGC