- N +

補(bǔ)碼的補(bǔ)碼是原碼(補(bǔ)碼-128怎么來(lái)的)

大家好,今天來(lái)為大家分享補(bǔ)碼的補(bǔ)碼是原碼的一些知識(shí)點(diǎn),和補(bǔ)碼-128怎么來(lái)的的問(wèn)題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很大概率可以解決您的問(wèn)題,接下來(lái)我們就一起來(lái)看看吧!

原碼和補(bǔ)碼的表示范圍

以8位字長(zhǎng)有符號(hào)整數(shù)為例:原碼范圍:11111111b~01111111b真值范圍:-1111111b~+1111111b,即-127d~+127d補(bǔ)碼范圍:10000000b~01111111b對(duì)應(yīng)的真值范圍:-10000000b~+1111111b,即-128d~+127d.以8位字長(zhǎng)定點(diǎn)有符號(hào)小數(shù)為例:[x]原=0.0000000b最高位的0是符號(hào)位表示正,此時(shí)為“正零”;[x]原=1.0000000b最高位的1是符號(hào)位表示負(fù),此時(shí)為“負(fù)零”。補(bǔ)碼的“正負(fù)”與“負(fù)零”都是0.0000000b

補(bǔ)碼怎么算

正數(shù)的補(bǔ)碼就是其本身

如+9的補(bǔ)碼是00001001。

負(fù)數(shù)的補(bǔ)碼是在其原碼的基礎(chǔ)上,符號(hào)位不變,其余各位取反,最后+1.(即在反碼的基礎(chǔ)上+1)

[+1]=[00000001]原=[00000001]反=[00000001]補(bǔ)

[-1]=[10000001]原=[11111110]反=[11111111]補(bǔ)

對(duì)于負(fù)數(shù),補(bǔ)碼表示方式也是人腦無(wú)法直觀看出其數(shù)值的.通常也需要轉(zhuǎn)換成原碼在計(jì)算其數(shù)值。

正整數(shù)的補(bǔ)碼是其二進(jìn)制表示,與原碼相同。

例:+9的補(bǔ)碼是00001001。

求負(fù)整數(shù)的補(bǔ)碼,將其對(duì)應(yīng)正數(shù)二進(jìn)制表示所有位(包括符號(hào)位)取反(0變1,1變0,符號(hào)位為1不變)后加1。

什么情況下原碼和反碼是相同的

相同。

正數(shù)的原碼=反碼=補(bǔ)碼。引進(jìn)補(bǔ)碼的作用是為了讓計(jì)算機(jī)更方便做減法。

例如:按時(shí)間12個(gè)小時(shí)來(lái)算,現(xiàn)在的準(zhǔn)確時(shí)間是4點(diǎn),有一個(gè)表顯示的是7點(diǎn),如果要校準(zhǔn)時(shí)間,我們可以將時(shí)針退7-4=3格,也可以向前撥12-3=9格,計(jì)算機(jī)做減法就可以轉(zhuǎn)化成-3=+9,這樣可以簡(jiǎn)化計(jì)算機(jī)的硬件設(shè)備去做復(fù)雜的減法。

原碼求補(bǔ)碼

正整數(shù)的補(bǔ)碼是其二進(jìn)制表示,與原碼相同。

例:+9的補(bǔ)碼是00001001。(備注:這個(gè)+9的補(bǔ)碼是用8位2進(jìn)制來(lái)表示的,補(bǔ)碼表示方式很多,還有16位二進(jìn)制補(bǔ)碼表示形式,以及32位二進(jìn)制補(bǔ)碼表示形式,64位進(jìn)制補(bǔ)碼表示形式等。每一種補(bǔ)碼表示形式都只能表示有限的數(shù)字。)

求負(fù)整數(shù)的補(bǔ)碼,將其原碼除符號(hào)位外的所有位取反(0變1,1變0,符號(hào)位為1不變)后加1。

同一個(gè)數(shù)字在不同的補(bǔ)碼表示形式中是不同的。比如-15的補(bǔ)碼,在8位二進(jìn)制中是11110001,然而在16位二進(jìn)制補(bǔ)碼表示中,就是1111111111110001。以下都使用8位2進(jìn)制來(lái)表示

為什么計(jì)算機(jī)采用補(bǔ)碼而不是原碼或反碼

第一點(diǎn),計(jì)算機(jī)里面的指令執(zhí)行單元是加法器,所以理論上說(shuō),它們的工作只是將給定兩個(gè)寄存器里存儲(chǔ)的數(shù)據(jù)相加,但是不能相減,因此需要把要相減的數(shù)字換成負(fù)數(shù)再加回去。

第二點(diǎn),需要保證對(duì)于所有數(shù)據(jù)而言,-x+x=0。因?yàn)檫@是現(xiàn)代數(shù)學(xué)最基礎(chǔ)的原理,也是計(jì)算的基本,而且為了保證不出現(xiàn)+0和-0這樣有歧義的定義,計(jì)算機(jī)采用補(bǔ)碼來(lái)保證上述兩個(gè)條件在任何條件下成立。

知道補(bǔ)碼,如何計(jì)算原碼

兩種計(jì)算方法:

算法1:補(bǔ)碼=原碼取反再加1的逆運(yùn)算10010110是補(bǔ)碼,應(yīng)先減去1變?yōu)榉创a,得10010101;由反碼取得源碼即除符號(hào)位外其他為按位取反,得11101010,即十進(jìn)制數(shù)的-106算法2:負(fù)數(shù)補(bǔ)碼速算法,由最低位(右)向高位(左)查找到第一個(gè)1與符號(hào)位之間的所有數(shù)字按位取反的逆運(yùn)算10010110是補(bǔ)碼,符號(hào)位與最后一個(gè)1之間的所有數(shù)字按位取反,得11101010兩種算法得出同樣結(jié)果

好了,本文到此結(jié)束,如果可以幫助到大家,還望關(guān)注本站哦!

返回列表
上一篇:
下一篇: