日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書頻道 > 電子 > 《數(shù)字電子技術(shù)》 > 第1章 數(shù)制與碼制

第3節(jié) 帶符號(hào)數(shù)的代碼表示

 

1.3.1  真值與機(jī)器數(shù)

    上述討論的過程中都沒有考慮二進(jìn)制數(shù)的符號(hào),一般認(rèn)為其為正數(shù),但在算術(shù)運(yùn)算過程中,總會(huì)出現(xiàn)負(fù)數(shù)。實(shí)際上不帶符號(hào)的數(shù)是數(shù)的絕對(duì)值,在絕對(duì)值前加上表示正負(fù)的符號(hào)(+/- )就成了帶符號(hào)數(shù)。它可由兩部分組成:一部分是表示數(shù)的符號(hào),另一部分是表示數(shù)的數(shù)值。由于數(shù)的符號(hào)是一個(gè)具有正、負(fù)兩種值的離散信息,所以它可以用一位二進(jìn)制數(shù)來表示。通常是以0表示正數(shù),以1表示負(fù)數(shù)。對(duì)于一個(gè)n位二進(jìn)制數(shù),如果數(shù)的第一位為符號(hào)位,那么余下的n-1位就表示數(shù)的數(shù)值部分。

一般,直接用正號(hào)“+”和負(fù)號(hào)“-”來表示符號(hào)的二進(jìn)制數(shù),稱為符號(hào)數(shù)的真值。數(shù)的真值形式是一種原始形式,無法直接用在數(shù)字計(jì)算機(jī)中。但是,當(dāng)將符號(hào)數(shù)值化之后,便可以在計(jì)算機(jī)中使用它了。因此在計(jì)算機(jī)中使用的符號(hào)數(shù)便稱為機(jī)器數(shù)。

    如二進(jìn)制正數(shù)+1011在機(jī)器中的表示為01011,二進(jìn)制負(fù)數(shù)-1011在機(jī)器中的表示為11011。

    通過前面介紹的二進(jìn)制數(shù)的加、減、乘、除四種運(yùn)算可知,乘法運(yùn)算實(shí)際上是做左移加法運(yùn)算,而除法運(yùn)算則是做右移位減法運(yùn)算。即在機(jī)器中只需要做加、減兩種運(yùn)算。但在做減法運(yùn)算時(shí),必須先比較兩個(gè)數(shù)絕對(duì)值的大小,再將絕對(duì)值大的數(shù)減絕對(duì)值小的數(shù),最后在相減結(jié)果的前面加上絕對(duì)值較大的數(shù)的符號(hào)。因此,雖然邏輯電路可以實(shí)現(xiàn)減法運(yùn)算,但所需的電路復(fù)雜,運(yùn)算速度較作加法慢得多。為了能使減法運(yùn)算變成加法運(yùn)算,人們給出了三種機(jī)器數(shù)的表示形式,即原碼、反碼和補(bǔ)碼。

1.3.2  原碼

    原碼又被稱為“符號(hào)—數(shù)值表示”。用當(dāng)原碼形式表示正數(shù)和負(fù)數(shù)的,第1位是符號(hào)位。對(duì)于正數(shù),符號(hào)位表示的0,對(duì)于負(fù)數(shù),符號(hào)位表示的1,其余各位表示數(shù)值部分。

假如兩個(gè)帶符號(hào)的二進(jìn)制數(shù)分別為S1和S2,其真值形式為

S1= +11001    S2= -01011

則S1和S2的原碼表示形式為

[S1]= 011001    [S2]= 101011

根據(jù)上述原碼形成規(guī)則,一個(gè)n位的整數(shù)S (包括一位符號(hào)位)的原碼一般表達(dá)式為

              (1.3.1)

對(duì)于定點(diǎn)小數(shù)而言,一般將小數(shù)點(diǎn)定在最高位的左邊,此時(shí),數(shù)值小于1。定點(diǎn)小數(shù)原碼一般表達(dá)式為

                  (1.3.2)

    由原碼的一般表達(dá)式中可以得出:

     (1 )當(dāng)S為正數(shù)時(shí),[S]和S的區(qū)別只是增加一位用0表示的符號(hào)位。由于在數(shù)的左邊增加一位0對(duì)該數(shù)的數(shù)值并無影響,所以[S]就是S本身。

     (2 )當(dāng)S為負(fù)數(shù)時(shí),[S]和S的區(qū)別是增加了一位用1表示的符號(hào)位。

     (3 )在原碼表示中,有兩種不同形式的0,即

[+0]= 0.00…0

[- 0]= 1.00…0

1.3.3  反碼

反碼又稱為“對(duì)1的補(bǔ)數(shù)”。當(dāng)用反碼表示時(shí),左邊第1位即為符號(hào)位,符號(hào)位為0代表正數(shù),符號(hào)位為1代表負(fù)數(shù)。對(duì)于正數(shù),反碼和原碼相同。而對(duì)于負(fù)數(shù),反碼的數(shù)值是將原碼數(shù)值按位求反,即原碼的某位為1,則反碼的相應(yīng)位便為0,或者原碼的某位為0,反碼的相應(yīng)位便為1。所以,反碼數(shù)值的形成與它的符號(hào)位有關(guān)。

假如兩個(gè)帶符號(hào)的二進(jìn)制數(shù)分別為S1和S2,其真值形式為

 S1= +1l001   S2= -01011

則S1和S2的反碼表示形式為

[S1]= 011001    [S2]= 110100

根據(jù)上述的反碼形成規(guī)則,一個(gè)n位的整數(shù)S (包括一位符號(hào)位)的反碼一般表達(dá)式為

                   (1.3.3)

 同樣,對(duì)于定點(diǎn)小數(shù),如果小數(shù)部分的位數(shù)為m,則它的反碼一般表達(dá)式為

                      (1.3.4)

從反碼的一般表達(dá)式可以看出:

 (1 )正數(shù)S的反碼[S]與原碼[S]相同。

 (2 )對(duì)于負(fù)數(shù)S,其反碼[S]的符號(hào)位為1,數(shù)值部分是將原碼數(shù)值按位求反。

 (3 )在反碼表達(dá)式中,0的表示有兩種不同的形式,即

[+0]= 0.00…0

[-0]= 1.11…1

  1. 3. 4  補(bǔ)碼

    補(bǔ)碼又稱為“對(duì)2的補(bǔ)數(shù)”。在補(bǔ)碼表示方法中,正數(shù)的表示同原碼和反碼的表示是一樣的,而負(fù)數(shù)的表示卻不相同。對(duì)于負(fù)數(shù),將原碼轉(zhuǎn)變成補(bǔ)碼的規(guī)則是:符號(hào)位不變,仍為l,數(shù)值部分變反加1,即逐位變反,在最低位加1。

    如兩個(gè)帶符號(hào)的二進(jìn)制數(shù)分別為S1和S2,其真值表達(dá)式為

S1= +11001      S2= -01011

則S1和S2的補(bǔ)碼表示形式為   

[S1]補(bǔ)= 011001    [S2]補(bǔ)= 110101

根據(jù)上述補(bǔ)碼形成規(guī)則,一個(gè)n位的整數(shù)S (包括一位符號(hào)位)的補(bǔ)碼一般表達(dá)式為

                    (1.3.5)

同樣,對(duì)于定點(diǎn)小數(shù),補(bǔ)碼一般表達(dá)式可寫成

                         (1.3.6)

    由補(bǔ)碼的一般表達(dá)式可以看出:

     (1 )正數(shù)S的補(bǔ)碼[S]補(bǔ)、反碼[S]和原碼[S]是相同的 

     (2 )對(duì)于負(fù)數(shù),補(bǔ)碼[S]補(bǔ)的符號(hào)位為1,其數(shù)值部分為反碼的數(shù)值末位加1。

     (3 )在補(bǔ)碼表示法中,0的表示形式是唯一的。即

    [+0]補(bǔ)= 0.00…0

    [-0]補(bǔ)= 0.00…0

1. 3. 5  機(jī)器數(shù)的運(yùn)算

    前面介紹了帶符號(hào)數(shù)的三種表示法,由于形成規(guī)則不同,加、減運(yùn)算的規(guī)律也不相同。下面分別加以介紹。    

    一、原碼運(yùn)算

    原碼中的符號(hào)位僅用來表示數(shù)的正、負(fù),不參加運(yùn)算。進(jìn)行運(yùn)算的只是數(shù)值部分。原碼運(yùn)算時(shí),應(yīng)首先比較兩個(gè)數(shù)的符號(hào),若兩數(shù)的符號(hào)相同,則可將兩個(gè)數(shù)的數(shù)值相加,最后給結(jié)果附上相應(yīng)的符號(hào);若兩數(shù)的符號(hào)不同,則需比較兩數(shù)的數(shù)值大小,然后將數(shù)值較大的數(shù)減去數(shù)值較小的數(shù),并將數(shù)值較大的數(shù)的符號(hào)作為最后結(jié)果的符號(hào)。下面舉例說明。

    1.3.1  已知S1=  0.1001,S2= -0.0101,求[S2+S1  ]和[S2-S1]。

    :    [S2+S1]= [ (-0.0101 )+ (0.1001 )]

    由于S1和S2的符號(hào)不同,并且的S1絕對(duì)值大于S2的絕對(duì)值,因此要進(jìn)行S1減S2的運(yùn)算,其結(jié)果為正。

運(yùn)算結(jié)果為原碼,即

[S2+S1]= 0.0100

故其真值為

S2+S1= 0.0100

    又     [S2-S1]= [ (-0.0101 )- (0.1001 )]

    由于S1和S2的符號(hào)相同,因此,實(shí)際上要進(jìn)行Sl加S2的運(yùn)算,其結(jié)果為負(fù)。

運(yùn)算結(jié)果為原碼,即

 [S2-S1]= 1.1101

故其真值為

S2-S1 = -0.1101

 

    二、反碼運(yùn)算

由反碼的定義可以得到反碼加、減運(yùn)算規(guī)則如下:

[S2+S1]= [S2]+[S1]

[S2-S1]= [S2]+[-S1]

反碼的加、減運(yùn)算規(guī)則表明:兩數(shù)和的反碼等于兩數(shù)的反碼之和,而兩數(shù)差的反碼也可以用加法來實(shí)現(xiàn)。運(yùn)算時(shí),符號(hào)位和數(shù)值位一樣參加運(yùn)算,如果符號(hào)位產(chǎn)生進(jìn)位,則需將此進(jìn)位加到和數(shù)的最低位,稱之為“循環(huán)進(jìn)位”。運(yùn)算結(jié)果的符號(hào)位為0時(shí),說明是正數(shù)的反碼,與原碼相同;運(yùn)算結(jié)果的符號(hào)位為1時(shí),說明是負(fù)數(shù)的反碼,應(yīng)再對(duì)運(yùn)算結(jié)果求反碼,才得到原碼。下面舉例說明。

    1.3.2  已知S1=  0.1001,S2= -0.0101,求[S2+S1]和[S2-S1]。

    解:  [S2+S1]= [S2]+ [S1]=  1.1010+0.1001

由于符號(hào)位產(chǎn)生了進(jìn)位,因此要進(jìn)行“循環(huán)進(jìn)位”,即 

[S2+S1]=  0.0100

由于其符號(hào)位為0,則其真值為S2+S1=  0.0100

又  [S2-S1]=  [S2]+ [-S1]=  1.1010+1.0110

由于符號(hào)位產(chǎn)生了進(jìn)位,因此要進(jìn)行“循環(huán)進(jìn)位”,即

[S2-S1]=  1.0001

由于其符號(hào)位為1,則其真值為S2-S1=  -0.1110

    三、補(bǔ)碼運(yùn)算

    補(bǔ)碼運(yùn)算同反碼運(yùn)算一樣,兩數(shù)差的補(bǔ)碼可以用兩數(shù)補(bǔ)碼的加法來實(shí)現(xiàn)。補(bǔ)碼加、減運(yùn)算規(guī)則是:

[S2+S1]補(bǔ)=  [S2]補(bǔ)+[S1]補(bǔ)

[S2-S1]補(bǔ)=  [S2]補(bǔ)+[-S1]補(bǔ)

    運(yùn)算時(shí),符號(hào)位和數(shù)值位一樣參加運(yùn)算,如果符號(hào)位產(chǎn)生了進(jìn)位,則此進(jìn)位可“略去”。運(yùn)算結(jié)果符號(hào)位為0時(shí),說明是正數(shù)的補(bǔ)碼,與原碼相同。運(yùn)算結(jié)果符號(hào)位為l,說明是負(fù)數(shù)的補(bǔ)碼,應(yīng)對(duì)結(jié)果再求補(bǔ)碼才得原碼。

    下面舉例說明。

    1.3.3  已知S1=  0.1001,S2=  -0.0101,求[S2+S1]補(bǔ)和[S2-S1]補(bǔ)。

    解:  [S2+S1]補(bǔ)=  [S2]補(bǔ)+[S1]補(bǔ)=  1.1011+0.1001

由于符號(hào)位產(chǎn)生了進(jìn)位,因此,要將此進(jìn)位略去,即

[S2+S1]補(bǔ)=  0.0100

    運(yùn)算結(jié)果的符號(hào)位為0,說明是正數(shù)的補(bǔ)碼,補(bǔ)碼與原碼相同。

由于其符號(hào)位為0,則其真值為

S2+S1=  0.0100

 又   [S2-S1]補(bǔ)=  [S2]補(bǔ)+[-S1]補(bǔ)=  1.1011+1.0111

由于符號(hào)位產(chǎn)生了進(jìn)位,因此,要將此進(jìn)位略去,即

[S2-S1]補(bǔ)=  1.0010

運(yùn)算結(jié)果的符號(hào)位為1,說明是負(fù)數(shù)的補(bǔ)碼,應(yīng)對(duì)補(bǔ)碼求補(bǔ)后才能得到原碼,即

[S2-S1]=  1.1110

由于其符號(hào)位為1,則其真值為

S2-S1= -0.1110

從上述的討論可以看出,原碼、反碼和補(bǔ)碼各有優(yōu)缺點(diǎn)。原碼表示法簡(jiǎn)單方便,但原碼減法必須做真正的減法,不能用加法來代替,因此實(shí)現(xiàn)原碼運(yùn)算所需的邏輯電路比較復(fù)雜。反碼和補(bǔ)碼的優(yōu)點(diǎn)是只需用加法邏輯電路便可實(shí)現(xiàn)。并且用補(bǔ)碼進(jìn)行減法運(yùn)算很方便,它只需進(jìn)行一次算術(shù)相加。而用反碼進(jìn)行減法運(yùn)算,若符號(hào)位產(chǎn)生進(jìn)位就需進(jìn)行兩次算術(shù)相加。而且反碼還有一個(gè)缺點(diǎn),就是具有兩個(gè)零值,這容易在計(jì)算過程中產(chǎn)生歧意。

?
即墨市| 平南县| 乐山市| 乌兰浩特市| 株洲市| 驻马店市| 丰台区| 侯马市| 白河县| 宁河县| 城口县| 新巴尔虎左旗| 登封市| 江西省| 新津县| 鄂伦春自治旗| 米泉市| 丹巴县| 石嘴山市| 临清市| 伊金霍洛旗| 溆浦县| 苏尼特右旗| 佛山市| 晋州市| 清原| 达尔| 浪卡子县| 万年县| 海安县| 安岳县| 宜君县| 崇左市| 天台县| 舞钢市| 张家口市| 徐闻县| 新营市| 高青县| 平昌县| 临猗县|