第一章(續(xù)) 計(jì)算機(jī)中的數(shù)據(jù)信息_第1頁
第一章(續(xù)) 計(jì)算機(jī)中的數(shù)據(jù)信息_第2頁
第一章(續(xù)) 計(jì)算機(jī)中的數(shù)據(jù)信息_第3頁
第一章(續(xù)) 計(jì)算機(jī)中的數(shù)據(jù)信息_第4頁
第一章(續(xù)) 計(jì)算機(jī)中的數(shù)據(jù)信息_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一章(續(xù))計(jì)算機(jī)中的數(shù)據(jù)表示

1、數(shù)和數(shù)制3、二進(jìn)制數(shù)的小數(shù)表示-定點(diǎn)數(shù)和浮點(diǎn)數(shù)4、BCD碼及ASCⅡ碼2、帶符號數(shù)的機(jī)器表示法一﹑數(shù)的位置表示法及各種進(jìn)位制數(shù)設(shè)基數(shù)為X,則一個(gè)數(shù)N可展開為:

N=an-1Xn-1+an-2Xn-2+….+a0X0+a-1X-1+…+a-(m-1)X-(m-1)+a-mX-m

1、數(shù)和數(shù)制客觀事物存在著多少和大小的差別,數(shù)是客觀事物的量在人們頭腦中的反映。一個(gè)數(shù)可以用不同的計(jì)數(shù)制度來表示它的大小,雖然形式不同,但數(shù)的“量”則是相等的。用一組數(shù)字表示數(shù)時(shí),如果每個(gè)數(shù)字表示的量不但取決于數(shù)字本身,而且取決于它所在的位置,就稱為位置表示法。

基數(shù)X的取值不同,便得到不同進(jìn)位制數(shù)的表達(dá)式。

當(dāng)X=10時(shí),得十進(jìn)制數(shù)的表達(dá)式為:N10=∑ai10i

其特點(diǎn)是:系數(shù)ai只能在0─9這十個(gè)數(shù)字中取值;每個(gè)數(shù)位上的權(quán)是10的某次冪;在加減運(yùn)算中,采用“逢十進(jìn)一”和“借一當(dāng)十”的規(guī)則。

當(dāng)X=2時(shí),得二進(jìn)制數(shù),其表達(dá)式為:N2=∑ai2i

i=-mn-1其特點(diǎn)是:系數(shù)ai只能在0和1這兩個(gè)數(shù)字中取值;每個(gè)數(shù)位上的權(quán)是2的某次冪;在加減法運(yùn)算中,采用“逢二進(jìn)一”和“借一當(dāng)二”的規(guī)則。n-1i=-m同理,當(dāng)X=16時(shí),得十六進(jìn)制數(shù)的表達(dá)式為:N16=∑ai16i其特點(diǎn)是:系數(shù)ai只能在0-15這16個(gè)數(shù)字中取值(其中0-9這10個(gè)數(shù)字借用十進(jìn)制總的數(shù)碼,10-15這6個(gè)數(shù)可用兩種方法表示,即0,1,2,3,4,5或A,B,C,D,E,F);每個(gè)數(shù)位上的權(quán)是16的某個(gè)冪;在加減法運(yùn)算中,采用“逢十六進(jìn)一“和“借一當(dāng)十六”的規(guī)則。

表2-1列出了四種進(jìn)位制中數(shù)的表示法,用后綴表示采用的進(jìn)位制。B----二進(jìn)制Q-----八進(jìn)制H----十六進(jìn)制十進(jìn)制數(shù)可以用D后綴,也可以什么也不寫n-1i=-m表2-1十進(jìn)制、二進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù)碼對照表二、各種進(jìn)位制數(shù)的換算方法1.

任意進(jìn)位制數(shù)與十進(jìn)制數(shù)之間的相互轉(zhuǎn)換(1)

任意進(jìn)位制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)最簡單的方法是根據(jù)任意進(jìn)位制數(shù)的表達(dá)式按權(quán)展開后相加即可。例如:(1011.110B)=1×23+0×22+1×21+1×20+1×2-1+1×2-2+0×2-3=11.75732.14Q=7×82+3×81+2×80+1×8-1+4×8-2=474.18753ABF.E6H=3×163+10×162+11×161+15×160

+14×16-1+6×16-2=15039.8984375(2)

十進(jìn)制整數(shù)轉(zhuǎn)換為任意進(jìn)位制整數(shù)常用的方法是除基取余法。設(shè)N是待轉(zhuǎn)換的十進(jìn)制整數(shù),X是某一進(jìn)位制的基數(shù),則將N轉(zhuǎn)換為X進(jìn)位制數(shù)的方法如下:XNX商1余1低位X商2余2┆X商m余m0高位

∴NX=

余m余m-1…余2余1(3)

十進(jìn)制小數(shù)轉(zhuǎn)換為任意進(jìn)制小數(shù)常用的方法為乘基取整法。設(shè)N是待轉(zhuǎn)換的十進(jìn)制小數(shù),X是某一進(jìn)位制的基數(shù),則將N轉(zhuǎn)換為X進(jìn)位制小數(shù)方法如下:

N×X

高位整1.小數(shù)1×X

整2.小數(shù)2×X┇

整m-1.小數(shù)m-1×X

低位整m.00┅0∴NX=0.整1整2…整

m例:0·125=0·001B0·625=0·101B0·1=0·0001100110011…B有時(shí)不能用有限位數(shù)的二進(jìn)制小數(shù)表示十進(jìn)制小數(shù)2.十六進(jìn)制數(shù)與二進(jìn)制之間的轉(zhuǎn)換由于16=24,所以一位十六進(jìn)制數(shù)對應(yīng)于四位二進(jìn)制數(shù),二進(jìn)制與十六進(jìn)制間的轉(zhuǎn)換十分簡便。①

將十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)只要把每一位十六進(jìn)制數(shù)用相應(yīng)的四位二進(jìn)制數(shù)替換即可。例如:FA8.5CH=111110101000.010111B11111010100001011100例:1D·67H=11101·01100111B0001110101100111

②將二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)轉(zhuǎn)換方法也與八進(jìn)制相似,即以小數(shù)點(diǎn)為界,向左(整數(shù)部分)、右(小數(shù)部分)每四位一組,不足四位者,在前面(整數(shù)部分)或后面(小數(shù)部分)補(bǔ)零,然后將每一組用對應(yīng)的十六進(jìn)制數(shù)替換即可。例如:100011101001.1100011B()H1000,1110,1001.1100,0110B=8E9.C6H

補(bǔ)零11011.1B()H0001,1011·1000B=1B·8H三、二進(jìn)制數(shù)的權(quán)值及運(yùn)算方法

1.

二進(jìn)制數(shù)的權(quán)值計(jì)算機(jī)內(nèi)部采用二進(jìn)制,但人們習(xí)慣于十進(jìn)制,因此在應(yīng)用計(jì)算機(jī)解決實(shí)際問題時(shí),常常要進(jìn)行二進(jìn)制與十進(jìn)制的相互轉(zhuǎn)換。應(yīng)用本章前面介紹的方法進(jìn)行轉(zhuǎn)換時(shí),有時(shí)顯得繁瑣。若能熟記二進(jìn)制數(shù)各位上用十進(jìn)制表示的位權(quán),如表2-2所示,將能大為簡化轉(zhuǎn)換的步驟。例如,要將65轉(zhuǎn)換成二進(jìn)制數(shù),若用連除法,需要很多步,但我們查看權(quán)值表可知26=64、25=32…..而65=64+1,這個(gè)等式說明,轉(zhuǎn)換后的二進(jìn)制數(shù)第0位與第6位為1,其余全為0,因而我們可很輕松地計(jì)算出65=1000001B。注意:從低位到高位二進(jìn)制數(shù)的權(quán)值為20、21、22┅

表2-2二進(jìn)制數(shù)的“權(quán)值”表

例如:115=64+32+16+2+1,則115=1110011B?!?625242120

反過來,計(jì)算二進(jìn)制數(shù)對應(yīng)的十進(jìn)制值,熟記權(quán)值就更加重要。2.二進(jìn)制數(shù)的運(yùn)算方法二進(jìn)制計(jì)數(shù)制除物理實(shí)現(xiàn)簡便外,運(yùn)算方法也比十進(jìn)制計(jì)數(shù)制簡單。例如:1011001B=26+24+23+20=64+16+8+1=89(1)二進(jìn)制加法一位二進(jìn)制數(shù)的加法規(guī)則為:0+0=00+1=1+0=11+1=0進(jìn)位11+1+1=1進(jìn)位1如1101B+0111B

被加數(shù)1101

加數(shù)0111

進(jìn)位+)111————10100(2)二進(jìn)制減法一位二進(jìn)制減法的規(guī)則為:0-0=01-1=01-0=00-1=1有借位0-1-1=0有借位故二個(gè)二進(jìn)制數(shù)相減,如1010B-0101B,過程如下:1010B-0101B

110101B(3)

二進(jìn)制乘法一位二進(jìn)制數(shù)的乘法規(guī)則為:

0×0=01×0=00×1=01×1=11110B×0110B可進(jìn)行如下:

被乘數(shù)1110

乘數(shù)×0110——————

中間結(jié)果0000

中間結(jié)果1110

中間結(jié)果1110

中間結(jié)果+)0000———————

積1010100

被乘數(shù)1110

乘數(shù)×0110

初始部分積0000

乘數(shù)最低位為0,加全0+0000———————————————

部分積0000

部分積右移一位00000乘數(shù)次低位為1,加被乘數(shù)+1110—————————————

部分積11100

部分積右移一位011100乘數(shù)第三低位為1,加被乘數(shù)+1110——————————————

部分積1010100

部分積右移一位1010100乘數(shù)最高位為0,加全0+0000

部分積1010100

部分積右移一位得到乘積01010100(3)

二進(jìn)制除法二進(jìn)制除法運(yùn)算與十進(jìn)制除法運(yùn)算類似,對整數(shù)除法可先從被除數(shù)的最高位開始,將被除數(shù)(或中間余數(shù))與除數(shù)相比較,若被除數(shù)(或中間余數(shù))大于除數(shù),則被除數(shù)(或中間余數(shù))減去除數(shù),商1,并將相減之后得到的中間余數(shù)左移一位(中間余數(shù)的最低位用下一位被除數(shù)補(bǔ)充)作為下一次的中間余數(shù)。若被除數(shù)(或中間余數(shù))小于除數(shù),則不作減法,商0,并將本次的中間余數(shù)左移一位(中間余數(shù)的最低位用下一位被除數(shù)補(bǔ)充)得下一位的中間余數(shù)。如此逐次地進(jìn)行比較、相減和移位,就可得到所要求的各位商數(shù)和最終的余數(shù)。

例:1101.001÷101=?10.1011011101.0011010110001101010100001011010除法可歸結(jié)為相減和移位四.二進(jìn)制數(shù)的特點(diǎn)1.優(yōu)點(diǎn):2.缺點(diǎn):書寫式長、易錯(cuò)3.二進(jìn)制數(shù)的特性①移位特性:小數(shù)點(diǎn)右移一位,數(shù)值×2

小數(shù)點(diǎn)左移一位,數(shù)值÷2例:0101.005010.1002.5小數(shù)點(diǎn)左移一位01010.010小數(shù)點(diǎn)右移一位①易實(shí)現(xiàn)、易區(qū)別②運(yùn)算簡單③節(jié)約設(shè)備:④有良好的羅輯性:0,1真假R=2.71828,設(shè)備最省3.二進(jìn)制數(shù)的特性②奇偶特性:最低位為0偶數(shù)

最低位為1奇數(shù)例:01001100B10000001B偶數(shù)奇數(shù)③等位特性:1位十進(jìn)制數(shù)≈3.32位二進(jìn)制數(shù)

若精度10-5n=5×3.32≈16.6,16位機(jī)

精度10-10n=10×3.32≈33,32位機(jī)2、

帶符號數(shù)的機(jī)器表示法

一、機(jī)器數(shù)與真值二、機(jī)器數(shù)的原碼表示法

三、補(bǔ)碼和反碼

四.求補(bǔ)碼的方法五.補(bǔ)碼的運(yùn)算六.溢出判別七.算術(shù)移位八.各種碼制的比較和小結(jié)一、機(jī)器數(shù)與真值

真值:帶“+”或“-”符號的數(shù),+100111B,-0110011B機(jī)器數(shù):符號已經(jīng)數(shù)碼化了的數(shù)如果用“0”表示正號,用“1”表示負(fù)號,上述各數(shù)則可表示為:0100111B,10110011B,統(tǒng)稱為機(jī)器數(shù)符號位和數(shù)值位都成了數(shù)碼后,計(jì)算機(jī)可以識別了,但在數(shù)的運(yùn)算過程中符號位能否與數(shù)值位一起參加運(yùn)算呢?這是一個(gè)十分重要的問題。為了妥善地解決這個(gè)問題,產(chǎn)生了把符號位與數(shù)值位一起編碼的各種方法。二、機(jī)器數(shù)的原碼表示法原碼是最簡單的機(jī)器數(shù)。1、原碼的定義:用“0”表示正號,“1“表示負(fù)號,數(shù)值部分就是原來的數(shù)值,故稱為原碼。例如:設(shè)計(jì)算機(jī)的字長為8,已知X=+1011101B,Y=-111101B,則:[X]原=01011101B,[Y]原=10111101B原碼和真值的關(guān)系可歸納為右式:[X]原=X當(dāng)X≥+02n-1-X當(dāng)X≤-0上面的式子說明了兩個(gè)問題:①正數(shù)的原碼與真值相同[+0]原=0000┄00[-0]原=1000┄00

(n個(gè)二進(jìn)制位)(n個(gè)二進(jìn)制位)2、原碼表示法整數(shù)的數(shù)值范圍設(shè)計(jì)算機(jī)字長n=8,x為用原碼表示的整數(shù),則當(dāng)x為正整數(shù)時(shí):00000000B≤X≤01111111B+0≤X≤127即:+0≤x≤28-1-1推廣至n位字長:+0≤x≤2n-1-1…①②在原碼表示法中零有正零和負(fù)零之分。若設(shè)計(jì)算機(jī)的字長為8,則當(dāng)x為負(fù)整數(shù)時(shí):11111111B≤x≤10000000B-127≤x≤-0即:-(28-1-1)≤x≤-0推廣至n位字長:-(2n-1)≤x≤-0……………②將①②兩式合并得:-(2n-1-1)≤x≤2n-1-1當(dāng)n=8時(shí):-127≤x≤+127當(dāng)n=16時(shí):-32767≤x≤+32767當(dāng)n=32時(shí):-2147483647≤x≤+2147483647

3、

原碼表示法的優(yōu)缺點(diǎn)優(yōu)點(diǎn):直觀,與真值轉(zhuǎn)換容易缺點(diǎn):符號位并不能直接參與運(yùn)算1:00000001B-1:10000001B問題:設(shè)計(jì)算機(jī)字長n=8,十進(jìn)制數(shù)1和-1的二進(jìn)制原碼數(shù)為?三、補(bǔ)碼和反碼1.

補(bǔ)碼1)補(bǔ)碼的概念

為了說明補(bǔ)碼的概念,先從時(shí)鐘撥準(zhǔn)談起。假若現(xiàn)在是北京時(shí)間3點(diǎn)整,而時(shí)鐘卻指著5點(diǎn)整,快2小時(shí)。123691245

對時(shí)鐘而言,-2與+10等效同理,-5與+7等效時(shí)鐘撥準(zhǔn)有兩種方法:1)倒撥2小時(shí)(減法),則相當(dāng)于5-2=3;2)順時(shí)針撥10個(gè)小時(shí)(加法)5+10=3(在鐘面上12丟失)

無疑,對于十二進(jìn)制(以12為模),如下等式總是成立的:

X+12=X(mod12)當(dāng)X為負(fù)數(shù)時(shí),如X=-5,在模12的意義下有-5+12=-5(mod12)7=-5(mod12)

這樣,在模12的意義下,負(fù)數(shù)就可以轉(zhuǎn)化為正數(shù),而正負(fù)數(shù)相加也就可以轉(zhuǎn)化為正數(shù)間的相加,如:4+(-5)=4+7(mod12)設(shè)K≥Y≥0,X≤0|X|<K,則

Y+X=Y+[K+X]=Y+[X]補(bǔ)(modK)即:[X]補(bǔ)=K+X這就是說,加上某負(fù)數(shù)X,可以用加上該負(fù)數(shù)對模K的補(bǔ)碼[X]補(bǔ)來代替。一般可以把某X加上模數(shù)K定義為該數(shù)X對模K的補(bǔ)碼[X]補(bǔ),即2)計(jì)算機(jī)中補(bǔ)碼的定義(設(shè)計(jì)算機(jī)的字長為n)計(jì)算機(jī)中數(shù)的補(bǔ)碼是以2n為模,即:[x]補(bǔ)=2n+x。

下面討論補(bǔ)碼與真值的關(guān)系。

(1)當(dāng)x為正數(shù)時(shí):

設(shè)x=+xn-2xn-3…x1x0

則[x]補(bǔ)=2n+x=2n+xn-2xn-3…..x1x0=0xn-2xn-3…x1x0=[x]原=x∴正數(shù)的補(bǔ)碼與原碼相同,都等于真值。(2)當(dāng)x為負(fù)數(shù)時(shí):

設(shè)x=-xn-2xn-3…x1x0,則[x]補(bǔ)=2n+x=2n-1+(2n-1+x)∴負(fù)數(shù)的補(bǔ)碼仍是一個(gè)負(fù)數(shù),它是將其原碼的符號位保持不變,而將其數(shù)值部分求補(bǔ)得到的。(3)當(dāng)x為零時(shí):x為正零時(shí),[+0]補(bǔ)=2n+00…00=00…00x為負(fù)零時(shí),[-0]補(bǔ)=2n-00…00=00…00∴補(bǔ)碼中零只有一種表示法,無正負(fù)零之分

總結(jié):當(dāng)計(jì)算機(jī)字長為n時(shí),二進(jìn)制整數(shù)x的補(bǔ)碼定義如下:

[X]補(bǔ)=2n+X-2n-1≤X<0

X0≤X<2n-1例如:若x1=+1010011B,x2=-1010011B,計(jì)算機(jī)字長n=8,則[x1]補(bǔ)=01010011B[x2]補(bǔ)=28+(-1010011B)=27+(27-1010011B)=10101101B3)補(bǔ)碼表示法整數(shù)的數(shù)值范圍

補(bǔ)碼定義域的擴(kuò)充原碼:[+0]原=00000000B,[-0]原=10000000B

而補(bǔ)碼中,零是唯一的,即00000000B,那么10000000B表示什么數(shù)值呢?在補(bǔ)碼中,規(guī)定1000000B=[-128]補(bǔ)。例:(-128)+1=-12710000000B[-128]補(bǔ)

+00000001B[1]補(bǔ)

10000001B因此,用補(bǔ)碼表示的整數(shù),負(fù)數(shù)的定義域擴(kuò)大了一個(gè)數(shù)碼:n=8時(shí),負(fù)數(shù)最小值為-128n=16時(shí)負(fù)數(shù)最小值為-32768n=32時(shí)負(fù)數(shù)最小值為-2147483648②

補(bǔ)碼表示法整數(shù)的數(shù)值范圍:設(shè)計(jì)算機(jī)字長n=8,x為用補(bǔ)碼表示的整數(shù),則x為正整數(shù)及零時(shí):

00000000B≤x≤01111111B0≤x≤+1270≤x≤28-1-1擴(kuò)展到n位字長:0≤x≤2n-1-1………………①x為負(fù)整數(shù)及零時(shí):100000000B≤x≤00000000B-128≤x≤0-28-1≤x≤0擴(kuò)展到n位字長:-2n-1≤x≤0………………②合并①②兩式得:-2n-1≤x≤2n-1-1n=8時(shí):-128≤x≤

+127n=16時(shí):-32768≤x≤

+32767n=32時(shí):-2147483648≤x≤+21474836474)補(bǔ)碼的優(yōu)缺點(diǎn)優(yōu)點(diǎn):其符號位可直接參與加減法運(yùn)算,零唯一缺點(diǎn):不如原碼直觀,與真值間的轉(zhuǎn)換也不如原碼簡便上面我們討論的補(bǔ)碼,是以2n為模,又稱為2補(bǔ)碼。在二進(jìn)制中,常把2補(bǔ)碼簡稱為補(bǔ)碼。

2.反碼反碼是以2n-1為模的一種補(bǔ)碼,稱為1補(bǔ)碼1)

反碼的定義設(shè)計(jì)算機(jī)字長為n,一個(gè)二進(jìn)制整數(shù)的反碼定義為

[X]反=X+0≤X<2n-1

2n-1+X-2n-1<X≤-0

因?yàn)?n-1=11…1,所以反碼又稱為1補(bǔ)碼例:x1=+1100101B,[X]反=01100101Bx2=-1100101B,則[x]反=10011010B在反碼中,有正、負(fù)零之分。X=+00000000B時(shí),[x]反=[+0]反=00000000BX=-00000000B時(shí),[x]反=[-0]反=11111111B2)反碼的計(jì)算1補(bǔ)碼之所以又稱為反碼,是由于它與原碼的關(guān)系①

正數(shù)的反碼與原碼相同,都等于真值。②

負(fù)數(shù)的反碼與原碼關(guān)系為:原碼的符號位不變,數(shù)值位按位取反后的值例:設(shè)x=+0011101B,y=-0011101B,n=8,則[[x]反=[x]原=00011101B[y]原=10011101B[y]反=11100010B

3)反碼表示法整數(shù)的數(shù)值范圍

設(shè)計(jì)算機(jī)字長n=8,x為用反碼表示的整數(shù),則當(dāng)x為正整數(shù)時(shí):

取反00000000≤x≤01111111B+0≤x≤127+0≤x≤28-1-1擴(kuò)展到n位字長:+0≤x≤2n-1-1…………①當(dāng)x為負(fù)整數(shù)時(shí):10000000B≤x≤11111111B-127≤x≤-0-(28-1-1)≤x≤-0擴(kuò)展到n位字長:-(2n-1-1)≤x≤-0…………②合并①②式可得:-(2n-1-1)≤x≤2n-1-1n=8時(shí)-127≤x≤127n=16時(shí)-32767≤x≤32767反碼中,零有2種表示:[+0]反=00000000B[-0]反=11111111B4)

反碼的優(yōu)缺點(diǎn)反碼的優(yōu)點(diǎn)是符號位可參加運(yùn)算。缺點(diǎn)是不直觀,零不唯一。四.求補(bǔ)碼的方法 由上面討論知道,正數(shù)的補(bǔ)碼等于原碼,也等于真值,只有負(fù)數(shù)才有求補(bǔ)的問題。這里介紹三種求補(bǔ)碼的方法。1.

根據(jù)定義求如X=-1010111B,n=8則[X]補(bǔ)=28+(-1010111B)=100000000B-1010111B=10101001B(mod2n)2.

利用反碼求因?yàn)閇X]補(bǔ)=2n+X,[X]反=2n-1+X所以[X]補(bǔ)=[X]反+1即一個(gè)負(fù)數(shù)X的補(bǔ)碼等于其反碼在最低位加1。如X=-1010111B則[X]原=11010111B[X]反=10101000B[X]補(bǔ)=[X]反+1=10101000B+1=10101001B3.簡便的直接求補(bǔ)法根據(jù)原碼:從最低位起,到出現(xiàn)第一個(gè)1以前(包括第一個(gè)1)原碼中的數(shù)字不變,以后逐位取反,但符號位不變。例2.1試用直接求補(bǔ)法求X1=-1010111B及X2=-1110000B的補(bǔ)碼[X1]補(bǔ)及[X2]補(bǔ)。(n=8)解:X1=-1010111B,[X1]原=11010111B↑取反↑由原碼求補(bǔ)碼:符號位不變第一個(gè)1不變∴[X1]補(bǔ)=10101001B

X2=-1110000B,[X2]原=11110000B↑取反↑由原碼求補(bǔ)碼:符號位不變第一個(gè)1及其右邊各位不變∴[X2]補(bǔ)=10010000B五.補(bǔ)碼的運(yùn)算1.

帶符號數(shù)的運(yùn)算(1)

補(bǔ)碼的加法:兩個(gè)帶符號的補(bǔ)碼數(shù)X及Y(|X|及|Y|都小于2n-1,n為二進(jìn)制數(shù)的位數(shù))相加時(shí)有下述3種情況:Ⅰ·X≥0,Y≥0。若|X+Y|<2n-1,則根據(jù)補(bǔ)碼的定義,可得下式:[X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)=X+Y即兩個(gè)正數(shù)的補(bǔ)碼相加,所得的結(jié)果也為和的補(bǔ)碼形式(它與原碼相同)。Ⅱ.參與運(yùn)算的兩個(gè)補(bǔ)碼數(shù)不同符號,如設(shè)X≥0,Y<0:a.

若2n-1>X+Y≥0,則根據(jù)補(bǔ)碼的定義有:[X]補(bǔ)=X[Y]補(bǔ)=2n+Y

∴[X]補(bǔ)+[Y]補(bǔ)=X+2n+Y=2n+(X+Y)=[X+Y]補(bǔ)

mod2n

b.若-2n-1<X+Y<0,則根據(jù)補(bǔ)碼定義有[X]補(bǔ)=X[Y]補(bǔ)=2n+Y[X]補(bǔ)+[Y]補(bǔ)=X+2n+Y=2n-1+(2n-1+X+Y)=[X+Y]補(bǔ)↑符號位數(shù)值部分求補(bǔ)因而當(dāng)兩個(gè)符號不同的補(bǔ)碼數(shù)相加時(shí),結(jié)果也為補(bǔ)碼形式。Ⅲ.X<0、Y<0,若2n-1>|x+y|,則根據(jù)補(bǔ)碼的定義有

[X]補(bǔ)+[Y]補(bǔ)=2n+2n+(X+Y)=2n+(X+Y)=[X+Y]補(bǔ)

mod2n即兩個(gè)補(bǔ)碼形式的負(fù)數(shù)相加,所得之和也為負(fù)數(shù)的補(bǔ)碼形式。

[X]補(bǔ)+[Y]補(bǔ)=[X+Y]補(bǔ)例2.2用補(bǔ)碼計(jì)算(+25)+(-20),(-25)+(+20),(-25)+(-18)解:(+25)+(-20)=+0000101B

00011001[+25]補(bǔ)

+11101100[-20]補(bǔ)

——————

100000101[+5]補(bǔ)↑符號位進(jìn)位丟掉(-25)+(+20)=-0000101B11100111[-25]補(bǔ)

00010100[+20]補(bǔ)

——————11111011[-5]補(bǔ)對[-5]補(bǔ)再求補(bǔ),則還原為[-5]原=10000101B(-25)+(-18)=-0101011B11100111[-25]補(bǔ)

11101110[-18]補(bǔ)————————

111010101[-43]補(bǔ)↑符號位進(jìn)位丟掉[[-43]補(bǔ)]補(bǔ)=10101011B結(jié)論:二個(gè)數(shù)的補(bǔ)碼相加和仍為補(bǔ)碼形式,若其最高位(指有效位)為0,說明和為正,這時(shí)的和既為原碼,也為真值;若最高位為1,說明和為負(fù),這時(shí)的和為補(bǔ)碼。若想得到真值,需對其補(bǔ)碼再求補(bǔ)(方法不變)得到和的原碼,從原碼就很容易得到真值了。步驟:1)先分別求二個(gè)數(shù)的補(bǔ)碼2)將兩個(gè)補(bǔ)碼數(shù)相加,得到和的補(bǔ)碼3)對和進(jìn)行判斷若其最高位(指有效位)為0,說明和為正,這時(shí)的和既為原碼,也為真值;若最高位為1,說明和為負(fù),這時(shí)的和為補(bǔ)碼。(2)補(bǔ)碼的減法

兩個(gè)帶符號數(shù)相減,有如下基本公式:X-Y=X+(-Y)∴(X-Y)補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)這里的關(guān)鍵是求[-Y]補(bǔ)。下面介紹兩種方法。Ⅰ.把(-Y)看作一個(gè)整體,求其補(bǔ)碼,方法與前述相同。例如,計(jì)算20-19=?20-19=20+(-19)=+0000001B00010100[20]補(bǔ)

+11101101[-19]補(bǔ)————————100000001Ⅱ.先求[Y]補(bǔ),方法如前述,再根據(jù)[Y]補(bǔ)求[-Y]補(bǔ)。我們把根據(jù)[Y]補(bǔ)求[-Y]補(bǔ)的過程稱為變補(bǔ)。即:[[Y]

補(bǔ)]變補(bǔ)=[-Y]補(bǔ)根據(jù)[Y]補(bǔ)求變補(bǔ)的簡便方法是:從最低位起,到出現(xiàn)第一個(gè)1以前(包括第一個(gè)1),[Y]補(bǔ)中的數(shù)字不變,其余各位(包括符號位)按位取反。例如用此法計(jì)算20-19=?[19]補(bǔ)=00010011B

[-19]補(bǔ)=11101101B,將其與第一種方法比較,結(jié)果相同。例:計(jì)算①50-26,②(-100)-(-70)解:①50-26=00011000B(此題應(yīng)用第二種方法)[26]補(bǔ)=00011010B[-26]補(bǔ)=[[26]補(bǔ)]變補(bǔ)=11100110B所以00110010[50]補(bǔ)+11100110[-26]補(bǔ)————————

100011000[24]補(bǔ)↑符號位進(jìn)位丟掉②(-100)-(-70)(此題應(yīng)用第一種方法)=(-100)+(+70)=-0011110B10011100[-100]補(bǔ)

+01000110[+70]補(bǔ)————————11100010[-30]補(bǔ)

10011110B=[(-100)-(-70)]原綜上所述,對于補(bǔ)碼的加減法運(yùn)算可用下邊一般公式表示[X]補(bǔ)+[±Y]補(bǔ)=[X±Y]補(bǔ)(|X|,|Y|及|X+Y||都小于2n-1)這就是說,計(jì)算機(jī)只要一個(gè)加法器就可實(shí)現(xiàn)補(bǔ)碼的加減法運(yùn)算。

求補(bǔ)注意:教材中的求補(bǔ)計(jì)算就是我們這里的變補(bǔ)計(jì)算!兩個(gè)不帶符號數(shù)進(jìn)行加法,只要和絕對值不超過整個(gè)字長,就不溢出,則和也一定為正數(shù)的補(bǔ)碼形式,它等于和的原碼;兩個(gè)不帶符號數(shù)相減,可用減數(shù)變補(bǔ)與被減數(shù)相加來求得。

(1)若X≥Y,則兩者原碼相減時(shí)無借位,差值為正,X+[Y]變補(bǔ)的和必大于2n,最高位有進(jìn)位,得到的和為正數(shù)[X-Y]的補(bǔ)碼。它等于[X-Y]原(2)若X<Y,則兩者原碼相減時(shí)有借位,差值為負(fù),但X+[Y]變補(bǔ)的和必小于2n,最高位無進(jìn)位,得到的和為負(fù)數(shù)[X-Y]的補(bǔ)碼。2.不帶符號數(shù)的運(yùn)算[X]補(bǔ)+[±Y]補(bǔ)=[X±Y]補(bǔ)(|X|,|Y|及|X+Y||都小于2n)在計(jì)算機(jī)中,對兩個(gè)不帶符號數(shù)進(jìn)行補(bǔ)碼減法運(yùn)算時(shí),要判斷結(jié)果是正數(shù)還是負(fù)數(shù),必須看減數(shù)變補(bǔ)與補(bǔ)減數(shù)相加時(shí)有無進(jìn)位。有進(jìn)位,表示兩數(shù)原碼相減無借位,結(jié)果為正;無進(jìn)位,表示兩數(shù)原碼相減有借位,結(jié)果為負(fù)。例2.4用補(bǔ)碼進(jìn)行下列運(yùn)算:1)129-792)79-129解:1)X=129Y=79則X=10000001BY=01001111B[-Y]補(bǔ)=[Y]變補(bǔ)=10110001B10000001BX+10110001B[-Y]補(bǔ)

——————100110010B[X-Y]補(bǔ)

有進(jìn)無借結(jié)果為正[X-Y]原=[X-Y]補(bǔ)=00110010B=502)X=79Y=129則X=01001111BY=10000001B[-Y]補(bǔ)=[Y]變補(bǔ)=01111111B01001111BX+011111111B[-Y]補(bǔ)

————————011001110B[X-Y]補(bǔ)

無進(jìn)有借結(jié)果為負(fù)故對[X-Y]補(bǔ),再求補(bǔ)有X-Y=-00110010B故X-Y=-50結(jié)論:作加法時(shí),直接將兩數(shù)相加即可;作減法時(shí),是用減數(shù)變補(bǔ)與被減數(shù)相加來實(shí)現(xiàn)。結(jié)果的正負(fù)判別方法:(1)若參加運(yùn)算的兩數(shù)為帶符號的補(bǔ)碼形式,則結(jié)果的正負(fù)以最高位(符號位)來判別,最高位為0是正數(shù),最高位為1是負(fù)數(shù)(以運(yùn)算結(jié)果不溢出為條件);(2)若參加運(yùn)算的兩數(shù)為不帶符號的數(shù),則加法結(jié)果必為正數(shù)(以不溢出為條件),沒有符號位。而減法結(jié)果的正負(fù)都應(yīng)以最高位有無進(jìn)位來判別,減數(shù)變補(bǔ)與被減數(shù)相加時(shí)最高位有進(jìn)位,表示兩數(shù)原碼相減時(shí)無借位結(jié)果為正,否則結(jié)果為負(fù)數(shù)六.溢出判別任何一種運(yùn)算都不允許發(fā)生溢出,除非是只利用溢出作為判別而不使用所得的結(jié)果。所以當(dāng)溢出產(chǎn)生時(shí),應(yīng)使計(jì)算機(jī)停機(jī)或輸入檢查程序找出溢出原因,然后作相應(yīng)處理。1)不帶符號數(shù)的溢出減法沒有溢出問題,只有加法才有溢出問題。溢出的判別方法:CF=1,有溢出CF=0,無溢出2)帶符號數(shù)的溢出若運(yùn)算結(jié)果的絕對值超過運(yùn)算裝置的容量,數(shù)值部分便會(huì)發(fā)生溢出,占據(jù)符號位的位置,從而引起計(jì)算出錯(cuò)。微型機(jī)中常用的溢出判別法是雙高位判別法。為講清雙高位判別法,首先引進(jìn)兩個(gè)附加的符號,即Cs:它表征最高位(符號位)的進(jìn)位情況,如有進(jìn)位,Cs=1,否則,Cs=0。Cp:它表征數(shù)值部分最高位的進(jìn)位情況,如有進(jìn)位Cp=1,否則,Cp=0。在微型機(jī)中,常用“異或”線路來判別有無溢出發(fā)生,即若

Cs⊕Cp=1表示有溢出產(chǎn)生,否則便無溢出。例2.5(+110)+(+92)01101110[+110]補(bǔ)

+01011100[+92]補(bǔ)

———————————11001010Cs=0Cp=1正溢出,結(jié)果出錯(cuò)

“01”稱正溢出例2.6(-110)-(+92)10010010B[-110]補(bǔ)

+)10100100B[-92]補(bǔ)———————————————————

100110110B→+54Cs=1Cp=0負(fù)溢出,結(jié)果出錯(cuò)“10”稱負(fù)溢出例2.7兩個(gè)正數(shù)相加,和的絕對值小于2n-1時(shí),Cs=0,Cp=0,無溢出發(fā)生。00101101B+45+)00101101B+4501011010B→+90Cs=0Cp=0無溢出例2.8(-5)+(-5)11111011B+11111011B

111110110BCs=1Cp=1無溢出例2.9一個(gè)正數(shù)和一個(gè)負(fù)數(shù)相加,和肯定不溢出。此時(shí),若和為正數(shù),則Cs=1,Cp=1;若和為負(fù)數(shù),則Cs=0,Cp=0。10001011B[-117]補(bǔ)

11110100B[-12]補(bǔ)+)01111001B+121+)00001001B+9————————————————————————————

100000100B→+411111101B→-3Cs=1,Cp=1無溢出Cs=0,Cp=0無溢出

結(jié)論:

Cs⊕Cp=1

,有溢出,否則無溢出!七.算術(shù)移位

二進(jìn)制數(shù)在寄存器或存儲器中進(jìn)行算術(shù)移位時(shí),每左移一位,它表示的量的絕對值應(yīng)增大1倍(如果沒有溢出);每右移一位,它表示的量的絕對值應(yīng)減少一半。為此,在各種情況下對移出的空位應(yīng)補(bǔ)入不同的數(shù)。1)

對于正數(shù),左移或右移時(shí)空位都補(bǔ)以0。

例如:一個(gè)正的八位二進(jìn)制數(shù)為00001110+14

左移一位后為←000011100←補(bǔ)0+28

右移一位后為補(bǔ)0→000001110→+72

補(bǔ)碼法表示的負(fù)數(shù),左移時(shí)最低位補(bǔ)以0,右移時(shí)最高位補(bǔ)以1。例如:一個(gè)負(fù)的八位二進(jìn)制補(bǔ)碼數(shù)為11110010[-14]補(bǔ)

左移一位后為←111100100←補(bǔ)0[-28]補(bǔ)

右移一位后為補(bǔ)1→11111001

0→[-7]補(bǔ)3)反碼法表示的負(fù)數(shù),左移和右移時(shí),最高位和最低位均補(bǔ)1。例如:一個(gè)八位二進(jìn)制數(shù)為11110001[-14]反

左移一位后為←111100011←補(bǔ)1[-28]反

右移一位后為補(bǔ)1→111110000→[-7]反八.各種碼制的比較和小結(jié) 從數(shù)的符號如何表示開始,逐步地引出原碼、反碼、補(bǔ)碼和移碼,它們之間既有共同之處,又各自具有不同的性質(zhì)?,F(xiàn)歸納如下。1)

原碼、反碼、補(bǔ)碼和移碼均是計(jì)算機(jī)所能識別的數(shù),稱機(jī)器數(shù)。機(jī)器數(shù)是符號數(shù)碼化了的數(shù),要與真值相區(qū)別。2)

正數(shù)的原碼、反碼和補(bǔ)碼是相同的,并且與真值相同。重點(diǎn)理解負(fù)數(shù),這三種碼制的負(fù)數(shù)各有不同的定義。3)

原碼、補(bǔ)碼和反碼的最高位都表示符號位,用“0”表示“+”,用“1”表示“-”。但移碼卻正好相反,用“0”表示“-”,用“1”表示“+”。4)

零在補(bǔ)碼和移碼中具有唯一性,而在原碼及反碼中卻有兩種不同的表示。5)

補(bǔ)碼和反碼的符號位可以和數(shù)值位一起參加運(yùn)算,而原碼則不行,符號位與數(shù)值部分必須分開處理。3、二進(jìn)制數(shù)的小數(shù)點(diǎn)表示-定點(diǎn)數(shù)和浮點(diǎn)數(shù)1、定點(diǎn)數(shù)在計(jì)算機(jī)中用隱含規(guī)定小數(shù)點(diǎn)位置的方法,確定小數(shù)點(diǎn)。

根據(jù)小數(shù)點(diǎn)的位置是否固定,可分為定點(diǎn)表示(定點(diǎn)數(shù))和浮點(diǎn)表示(浮點(diǎn)數(shù))。計(jì)算機(jī)中數(shù)的小數(shù)點(diǎn)位置固定不變,稱為定點(diǎn)數(shù)。(1)定點(diǎn)整數(shù)將小數(shù)點(diǎn)固定在數(shù)的最低位(最右邊)的數(shù)稱為定點(diǎn)整數(shù)。dndn-1dn-2dn-3…d0符號位小數(shù)位數(shù)值部分對于n+1位(包括一位符號位)定點(diǎn)整數(shù),在計(jì)算機(jī)中的數(shù)據(jù)格式如下:(2)定點(diǎn)小數(shù)將小數(shù)點(diǎn)固定在數(shù)的符號位之后,最高數(shù)值位之前的數(shù)稱為定點(diǎn)小數(shù)。d0d-1d-2d-3…d-m-1d-m符號位小數(shù)位數(shù)值部分對于m+1位(最高一位符號位)定點(diǎn)小數(shù),在計(jì)算機(jī)中的數(shù)據(jù)格式如下:m+1位定點(diǎn)小數(shù)所能表示的范圍亦碼制不同而不同。對于原碼和反碼其數(shù)的范圍是:(1-2-m)~-(1-2-m)。對于補(bǔ)碼其數(shù)的范圍是:(1-2-m)~-1。當(dāng)定點(diǎn)機(jī)一經(jīng)設(shè)計(jì)完成,其小數(shù)點(diǎn)的位置就固定不變了,運(yùn)算中應(yīng)該注意參加運(yùn)算的數(shù)和運(yùn)算結(jié)果都應(yīng)該限定在定點(diǎn)數(shù)所能表示的范圍內(nèi),否則要產(chǎn)生“溢出”。2、浮點(diǎn)數(shù)

要處理的數(shù)既有小數(shù),也有整數(shù)部分,采用定點(diǎn)數(shù)表示就會(huì)很困難。應(yīng)該采用浮點(diǎn)數(shù)表示。計(jì)算機(jī)中數(shù)的小數(shù)點(diǎn)位置不固定,稱為浮點(diǎn)數(shù)。浮點(diǎn)數(shù)格式:浮點(diǎn)數(shù)分為階碼和尾數(shù)兩部分。JEm-1Em-2…E0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論