第1章-計(jì)算機(jī)中的數(shù)與編碼課件_第1頁(yè)
第1章-計(jì)算機(jī)中的數(shù)與編碼課件_第2頁(yè)
第1章-計(jì)算機(jī)中的數(shù)與編碼課件_第3頁(yè)
第1章-計(jì)算機(jī)中的數(shù)與編碼課件_第4頁(yè)
第1章-計(jì)算機(jī)中的數(shù)與編碼課件_第5頁(yè)
已閱讀5頁(yè),還剩88頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微機(jī)原理及應(yīng)用第一章計(jì)算機(jī)中的數(shù)與編碼12/5/20231華東師范大學(xué)電子系馬潮副教授1.1數(shù)制與轉(zhuǎn)換1.2有符號(hào)二進(jìn)制數(shù)的表示方法及溢出問(wèn)題1.3定點(diǎn)數(shù)和浮點(diǎn)數(shù)

1.4二進(jìn)制編碼的十進(jìn)制數(shù)(BCD編碼)

1.5ASCII字符代碼1.6漢字編碼第一章計(jì)算機(jī)中的數(shù)與編碼返回主目錄12/5/20232華東師范大學(xué)電子系馬潮副教授第一章計(jì)算機(jī)中的數(shù)與編碼

計(jì)算機(jī)的最基本功能是進(jìn)行數(shù)據(jù)的計(jì)算和處理加工。數(shù)在計(jì)算機(jī)中是以器件的物理狀態(tài)來(lái)表示的。為了方便和可靠,在計(jì)算機(jī)中采用了二進(jìn)制數(shù)字系統(tǒng),即計(jì)算機(jī)中要處理的所有數(shù)據(jù),都要用二進(jìn)制數(shù)字系統(tǒng)來(lái)表示,所有的字母、符號(hào)、漢字也都要用二進(jìn)制編碼(不是數(shù))來(lái)表示。在本章中,我們將介紹計(jì)算機(jī)中數(shù)制和碼制的有關(guān)預(yù)備知識(shí),其中有些內(nèi)容已在“計(jì)算機(jī)應(yīng)用基礎(chǔ)”和“脈沖與數(shù)字電路”課程中講過(guò)。由于它是學(xué)習(xí)微型計(jì)算機(jī)原理必不可少的基礎(chǔ)知識(shí),所以有必要進(jìn)行復(fù)習(xí)。12/5/20233華東師范大學(xué)電子系馬潮副教授1.1數(shù)和數(shù)制

1.1.1各種數(shù)制及其多項(xiàng)式表示法

在人們應(yīng)用各種數(shù)字符號(hào)表示事物個(gè)數(shù)的長(zhǎng)期過(guò)程中形成了各種數(shù)制。數(shù)制是以表示數(shù)值所用的數(shù)字符號(hào)的個(gè)數(shù)來(lái)命名的,如十進(jìn)制、十二進(jìn)制、十六進(jìn)制、六十進(jìn)制等。各種數(shù)制中數(shù)字符號(hào)的個(gè)數(shù)稱為該數(shù)制的基數(shù)。一個(gè)數(shù)可以用不同計(jì)算制表示它的大小,雖然形式不同,但數(shù)的量值則是相等的。在日常生活中,最常用的是十進(jìn)制。12/5/20234華東師范大學(xué)電子系馬潮副教授1.十進(jìn)制數(shù)

十進(jìn)制采用0~9十個(gè)數(shù)字和一個(gè)小數(shù)點(diǎn)符號(hào)來(lái)表示任意十進(jìn)制數(shù)。例如,374.53代表百位為3,十位7,個(gè)位為4,十分位為5,百分位為3的十進(jìn)制數(shù)。同一個(gè)數(shù)字在不同的數(shù)位代表的數(shù)值是不同的。這種記數(shù)方法稱為位置記數(shù)法。在位置記數(shù)法中,對(duì)每一個(gè)數(shù)位賦以不同的位值,稱為“權(quán)”。對(duì)于十進(jìn)制,每個(gè)數(shù)位上的權(quán)是10的某次冪,個(gè)位、十位及百位的權(quán)分別為1、10及100。十分位、百分位的權(quán)分別為10-1和10-2。每個(gè)數(shù)位上的數(shù)字所表示的量是這個(gè)數(shù)字和該數(shù)位的權(quán)的乘積。因此,任意十進(jìn)制數(shù)可按權(quán)展開(kāi)為10的冪多項(xiàng)式。例如,374.53的多項(xiàng)式表示形式為:12/5/20235華東師范大學(xué)電子系馬潮副教授3×102+7×101+4×100+5×10-1+3×10-2

對(duì)于n位整數(shù)m位小數(shù)的任意十進(jìn)制數(shù)N,可用多項(xiàng)式表示如下:

N10=Kn-1·10n-1+Kn-2·10n-2+…+K1·101+K0·100+K-1·10-1+K-2·10-2+…+K-(m-1)·10-(m-1)+K-m·10-m

其中i表示數(shù)的第一位;Ki表示第i位的數(shù)字,它可以為0~9中的任一數(shù)字;m和n為正整數(shù)。式中10為十進(jìn)制的基數(shù)。12/5/20236華東師范大學(xué)電子系馬潮副教授2.二進(jìn)制數(shù)人們習(xí)慣用十進(jìn)制計(jì)數(shù),但在電子計(jì)算機(jī)中,數(shù)是以器件的物理狀態(tài)來(lái)表示的,計(jì)算機(jī)中采用雙穩(wěn)態(tài)電子器件作為保存信息的基本元件,因此計(jì)算機(jī)中采用二進(jìn)制數(shù)。在二進(jìn)制中,只有0和1兩個(gè)數(shù)字。二進(jìn)制數(shù)同樣采用位置記數(shù)法,它的基數(shù)為2,每個(gè)數(shù)位上的權(quán)是2的某次冪。對(duì)于n位整數(shù)m位小數(shù)的任意二進(jìn)制數(shù)N2,可以用多項(xiàng)式表示如下:12/5/20237華東師范大學(xué)電子系馬潮副教授例如:(1101.011)2=1×23+1×22+0×21+1×20+0×2-1+1×2-2+1×2-33.十六進(jìn)制數(shù)計(jì)算機(jī)中采用二進(jìn)制數(shù),優(yōu)點(diǎn)是物理實(shí)現(xiàn)容易且運(yùn)算特別簡(jiǎn)單,缺點(diǎn)是書(shū)寫(xiě)冗長(zhǎng)。因此常用十六進(jìn)制(或有時(shí)用八進(jìn)制)代替二進(jìn)制來(lái)書(shū)寫(xiě)數(shù)據(jù)。在十六進(jìn)制中,有0,1,…,9,A,B,C,D,E,F等十六個(gè)數(shù)字符號(hào),其中A、B、C、D、E、F分別與十進(jìn)制中的10、11、12、13、14、15這6個(gè)數(shù)相對(duì)應(yīng)。十六進(jìn)制數(shù)同樣采用位置記數(shù)法,其基數(shù)16,每一數(shù)位上的權(quán)是16的某次冪。12/5/20238華東師范大學(xué)電子系馬潮副教授對(duì)于n位整數(shù)m位小數(shù)的任意十六進(jìn)制數(shù)N16,可以用多項(xiàng)式表示如下:(Ki=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)例如(10AF.12)16=1×163+0×162+10×161+15×160+1×16-1+2×16-2

實(shí)際表示時(shí),一個(gè)十六進(jìn)制數(shù)如果最高位數(shù)字為字母(A-F),則字母前面必須加一個(gè)0,以便與變量名等相區(qū)別。12/5/20239華東師范大學(xué)電子系馬潮副教授表2.1給出了以上四種數(shù)制的對(duì)應(yīng)關(guān)系。為避免混淆,可在數(shù)字的后面加填不同數(shù)制的區(qū)分符。區(qū)分符可以是數(shù)字角注,例如53710或537(十進(jìn)制),11012(二進(jìn)制),0EA216(十六進(jìn)制),也可以用字母標(biāo)注,其中:字母B(Binary)表示為二進(jìn)制數(shù);字母D(Decimal)或不加字母表示為十進(jìn)制數(shù);字母H(Hcxadccimal)表示為十六進(jìn)制數(shù)。一般來(lái)說(shuō),對(duì)于基數(shù)為X的任一數(shù)可以用多項(xiàng)式表示為12/5/202310華東師范大學(xué)電子系馬潮副教授Ki——第i位的系數(shù),可以為0,1,…,(X-1)共X個(gè)數(shù)字符號(hào)中任一數(shù)字符號(hào);m,n——冪指數(shù),均為正整數(shù);Xi——第i位的權(quán)。 教科書(shū)的第1頁(yè)給出了計(jì)數(shù)制的標(biāo)準(zhǔn)定義。12/5/202311華東師范大學(xué)電子系馬潮副教授12/5/202312華東師范大學(xué)電子系馬潮副教授1.1.2各種數(shù)制的相互轉(zhuǎn)換

1.非十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)

非十進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)比較簡(jiǎn)單,可先將其按定義展開(kāi)為多項(xiàng)式,再將系數(shù)及權(quán)均用十進(jìn)制表示按十進(jìn)制進(jìn)行乘法與加法運(yùn)算,所得結(jié)果即為該數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)。例1.1.1將二進(jìn)制數(shù)1101.101轉(zhuǎn)換為十進(jìn)制數(shù)。轉(zhuǎn)換過(guò)程如下:1101.101B=1×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3=8+4+1+0.5+0.125=13.625∴1101.101B=13.62512/5/202313華東師范大學(xué)電子系馬潮副教授例1.1.2將十六進(jìn)制數(shù)2AE.4轉(zhuǎn)換為十進(jìn)制數(shù)。2AE.4H=2×162+10×161+14×160+4×16-1

=512+160+14+0.25=686.25∴2AE.4H=686.252.十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制整數(shù)(1)十進(jìn)制整數(shù)轉(zhuǎn)換成非十進(jìn)制整數(shù)設(shè)N為任一十進(jìn)制整數(shù),若要把它轉(zhuǎn)換成n位X進(jìn)制整數(shù),則N=12/5/202314華東師范大學(xué)電子系馬潮副教授顯然,等式右邊,除了最后一項(xiàng)K0以外,其余各項(xiàng)都包含基數(shù)X的因子,都能被X除盡。所以等式兩邊同除以基數(shù)X,余數(shù)正是要求的X進(jìn)制數(shù)的最低位K0。商為Kn-1Xn-2+Kn-2Xn-3+…+K2X1+K1

同理,上式中各項(xiàng)除K1外,其余各項(xiàng)都包含基數(shù)X的因子,都能被X除盡。所以再將商除以X,余數(shù)正是要求的X進(jìn)制數(shù)的次低位K1,商為Kn-1Xn-3+Kn-2Xn-4+…+K3X1+K2

如此一直進(jìn)行下去,直到商等于0為止,就得到一系列余數(shù),它們正是要求的X進(jìn)制數(shù)的各位。12/5/202315華東師范大學(xué)電子系馬潮副教授這樣我們可以把十進(jìn)制整數(shù)轉(zhuǎn)換為X進(jìn)制整數(shù)的方法總結(jié)為用該數(shù)或商“除以基數(shù)取余數(shù),先為低位后為高位”。例1.1.3將十進(jìn)制數(shù)301轉(zhuǎn)換為二進(jìn)制數(shù)。轉(zhuǎn)換過(guò)程如下:

301/2=150 k0=1 9/2=4 k5=1 150/2=75 k1=0 4/2=2 k6=0 75/2=37 k2=1 2/2=1 k7=0 | 37/2=18 k3=1 1/2=0 k8=1 18/2=9 k4=0∴301=100101101B12/5/202316華東師范大學(xué)電子系馬潮副教授(2)十進(jìn)制小數(shù)轉(zhuǎn)換成非十進(jìn)制小數(shù)設(shè)N為任一十進(jìn)制小數(shù),若要把它轉(zhuǎn)換為m位X進(jìn)制小數(shù),則N==K-1X-1+K-2X-2+…+K-mX-m(2-6)等式兩邊同乘以基數(shù)X,得到K-1+K-2

X-1+K-3

X-2+…+K-mX-m+1

其中K-1為整數(shù)部分,它正好是所要求的X進(jìn)制小數(shù)的最高位;而新的小數(shù)部分為K-2X-1+K-3X-2+…+K-mX-m+1

若再將上式乘以X便得到K-2+K-3X-1+…+K-mX-m+2

12/5/202317華東師范大學(xué)電子系馬潮副教授K-2為整數(shù)部分,它正好是所要求的X進(jìn)制小數(shù)的次高位。如此繼續(xù)進(jìn)行下去,直到小數(shù)部分為零時(shí)止。若乘積的小數(shù)部分始終不為0,說(shuō)明相對(duì)應(yīng)的X進(jìn)制小數(shù)為不盡小數(shù)。這時(shí),乘到能滿足計(jì)算機(jī)精度要求為止。綜上所述,我們可以把十進(jìn)制小數(shù)轉(zhuǎn)換為相應(yīng)X進(jìn)制小數(shù)的方法總線為對(duì)該小數(shù)或乘以X后新的小數(shù)部分“乘以基數(shù)取整數(shù),先為高位后為低位”。例1.1.4將0.6875分別轉(zhuǎn)換為二進(jìn)制及十六進(jìn)制小數(shù)。轉(zhuǎn)換為二進(jìn)制的過(guò)程如下:0.6875×2=1.375K-1=10.375×2=0.75K-2=012/5/202318華東師范大學(xué)電子系馬潮副教授0.75×2=1.5K-3=10.5×2=1.0K-4=1∴0.6875=0.1011B轉(zhuǎn)換為十六進(jìn)制的過(guò)程如下:0.6875×16=11.0K-1=B∴0.6875=0.BH例1.1.5將0.734轉(zhuǎn)換為二進(jìn)制小數(shù)。轉(zhuǎn)換過(guò)程如下:0.734×2=1.468K-1=10.468×2=0.936K-2=012/5/202319華東師范大學(xué)電子系馬潮副教授0.936×2=1.872K-3=10.872×2=1.744K-4=10.744×2=1.488K-5=10.488×2=0.976K-6=0∴0.734=0.10110…B上面我們分別討論了十進(jìn)制整數(shù)轉(zhuǎn)換為非十進(jìn)制整數(shù)和十進(jìn)制小數(shù)轉(zhuǎn)換為非十進(jìn)制小數(shù)的方法。如果一個(gè)任意十進(jìn)制數(shù)要轉(zhuǎn)換為非十進(jìn)制數(shù),我們可以把整數(shù)部分和小數(shù)部分分別加以轉(zhuǎn)換,然后把轉(zhuǎn)換后的整數(shù)部分和小數(shù)部分相加。12/5/202320華東師范大學(xué)電子系馬潮副教授例1.1.6將十進(jìn)制數(shù)301.6875分別轉(zhuǎn)換為二進(jìn)制和十六進(jìn)制數(shù)。利用例1.1.3、例1.1.4的結(jié)果,得到:301=100101101B,0.6875=0.1011B301=12DH,0.6875=0.BH∴301.6875=100101101.1011B∴301.6875=12D.BH

3.十六進(jìn)制數(shù)與二進(jìn)制數(shù)之間的轉(zhuǎn)換由于16=24,故1位十六進(jìn)制數(shù)相當(dāng)于4位二進(jìn)制數(shù)。這樣,十六進(jìn)制數(shù)與二進(jìn)制數(shù)之間的相互轉(zhuǎn)換是十分簡(jiǎn)便的。12/5/202321華東師范大學(xué)電子系馬潮副教授二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)的方法是:首先從小數(shù)點(diǎn)開(kāi)始分別向左和向右把整數(shù)及小數(shù)部分每4位分成一組。若整數(shù)最高位的一組不足4位,則在其左邊加0補(bǔ)足4位;若小數(shù)最低位的一組不足4位,則在其右邊加0補(bǔ)足4位。然后,用與每組二進(jìn)制數(shù)所對(duì)應(yīng)的十六進(jìn)制數(shù)取代每組的4位二進(jìn)制數(shù),即得到對(duì)應(yīng)的十六進(jìn)制數(shù)。例1.1.7二進(jìn)制數(shù)1011101001.110101轉(zhuǎn)換為十六進(jìn)制數(shù)的方法是:二進(jìn)制數(shù)001011101001.11010100十六進(jìn)制數(shù)2E9.D412/5/202322華東師范大學(xué)電子系馬潮副教授十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的方法是:用相應(yīng)的4位二進(jìn)制數(shù)取代每1位十六進(jìn)制數(shù)。例1.1.8十六進(jìn)制數(shù)5C7A.3B轉(zhuǎn)換為二進(jìn)制的方法是:十六進(jìn)制數(shù)5C7A.3B二進(jìn)制數(shù)0101110001111010.00111011∴5C7A.3BH=101110001111010.00111011B12/5/202323華東師范大學(xué)電子系馬潮副教授1.1.3二進(jìn)制數(shù)的算術(shù)運(yùn)算二進(jìn)制計(jì)數(shù)制不僅物理實(shí)現(xiàn)容易,而且運(yùn)算方法也十進(jìn)制計(jì)數(shù)制大為簡(jiǎn)單。注意到二進(jìn)制數(shù)加法是“逢二進(jìn)一”和減法是“借一作二”的特點(diǎn),再根據(jù)十進(jìn)制數(shù)算術(shù)運(yùn)算的方法,很容易理解和完成二進(jìn)制數(shù)的算術(shù)運(yùn)算。例1.1.910110101B+1111B。加法過(guò)程如下:被加數(shù)10110101加數(shù)00001111進(jìn)位+111111和1100010012/5/202324華東師范大學(xué)電子系馬潮副教授∴10110101B+111B=11000100B由此可見(jiàn),兩個(gè)二進(jìn)制數(shù)相加時(shí),每1位有3個(gè)數(shù)(本位被加數(shù)和本位加數(shù)及低位來(lái)的進(jìn)位)相加,得到本位的和及向高的進(jìn)位。例1.1.1011000100B-100101B。減法過(guò)程如下:被減數(shù)11000100減數(shù)00100101借位-111111差100111112/5/202325華東師范大學(xué)電子系馬潮副教授∴11000100B-100101B=1001111B與加法相類(lèi)似,兩個(gè)二進(jìn)制相減時(shí),每1位有3個(gè)數(shù)(本位被減數(shù),減數(shù)以及從低位來(lái)的借位)參加運(yùn)算,本位被減數(shù)-本位減數(shù)-低位來(lái)的借位,即得到本位的差及向高位的借位。例1.1.111101B×1011B。乘法過(guò)程如下:被乘數(shù)1101乘數(shù)×10111101

12/5/202326華東師范大學(xué)電子系馬潮副教授11010000+1101積10001111∴1101B×1011B=10001111B對(duì)筆算來(lái)說(shuō),上述乘法過(guò)程不但是很清楚而且很方便,但對(duì)計(jì)算機(jī)來(lái)說(shuō),實(shí)現(xiàn)起來(lái)很不方便。有的微型計(jì)算機(jī)有專門(mén)的乘法指令來(lái)完成乘法運(yùn)算。對(duì)于沒(méi)有乘法指令的微型計(jì)算機(jī),乘法是采用部分積右移的辦法編制乘法運(yùn)算程序來(lái)實(shí)現(xiàn)的。12/5/202327華東師范大學(xué)電子系馬潮副教授例1.1.12100110B÷110B。除法過(guò)程如下:00011010010∴100110B÷110B=110B余10B有的微型計(jì)算機(jī)有專門(mén)的除法指令來(lái)完成除法運(yùn)算。對(duì)于沒(méi)有除法指令的微型計(jì)算機(jī),常用“相減-左移”法編制除法運(yùn)算程序?qū)崿F(xiàn)除法。12/5/202328華東師范大學(xué)電子系馬潮副教授1.1.4二進(jìn)制數(shù)的邏輯運(yùn)算

二進(jìn)制數(shù)的邏輯運(yùn)算常用的有“與”、“或”、“異或”及“非”運(yùn)算等四種。在組成表達(dá)式時(shí),可分別用符號(hào)“AND”、“OR”、“XOR”及“NOT”作為運(yùn)算符,有時(shí)也用“∧”、“∨”、“十”作為“與”、“或”、“異或”的運(yùn)算符,用數(shù)學(xué)上面加橫線“-”表示對(duì)該數(shù)進(jìn)行非運(yùn)算。二進(jìn)制數(shù)的邏輯運(yùn)算只按位進(jìn)行運(yùn)算。

1位二進(jìn)制數(shù)運(yùn)算規(guī)則如下:“與”運(yùn)算的規(guī)則為:12/5/202329華東師范大學(xué)電子系馬潮副教授1AND0=00AND1=00AND0=01AND1=1“或”運(yùn)算的規(guī)則為:0OR0=00OR0=10OR1=11OR1=112/5/202330華東師范大學(xué)電子系馬潮副教授“異或”運(yùn)算的規(guī)則為:0XOR0=01XOR0=10XOR1=11XOR1=0“非”運(yùn)算的規(guī)則為:NOT0=1NOT1=0多位二進(jìn)制數(shù)進(jìn)行邏輯運(yùn)算時(shí),可以利用二進(jìn)制數(shù)運(yùn)算規(guī)則按接進(jìn)行運(yùn)算。12/5/202331華東師范大學(xué)電子系馬潮副教授例1.1.13二進(jìn)制數(shù)10010111和00111000的“與”、“或”及“異或”。運(yùn)算結(jié)果分別為:10010111與)001110000001000010010111或)001110001011111110010111異或)001110001010111112/5/202332華東師范大學(xué)電子系馬潮副教授例1.1.14二進(jìn)制數(shù)10010111的“非”。運(yùn)算結(jié)果為:01101000注意:*1個(gè)字節(jié)、2個(gè)字節(jié)表示的二進(jìn)制整數(shù)范圍*簡(jiǎn)便的二十進(jìn)制數(shù)轉(zhuǎn)換方法12/5/202333華東師范大學(xué)電子系馬潮副教授1.2有符號(hào)二進(jìn)制數(shù)的表示方法及溢出問(wèn)題1.2.1有符號(hào)二進(jìn)制數(shù)的表示方法前面我們接觸的二進(jìn)制數(shù)均為無(wú)符號(hào)數(shù),即所有二進(jìn)制數(shù)位均為數(shù)值位,在很多數(shù)據(jù)處理過(guò)程中需要這樣看待某些數(shù)。然而實(shí)際的數(shù)值有時(shí)是帶有符號(hào)的,既可能是正數(shù),也可能是負(fù)數(shù)。這樣就存在一個(gè)有符號(hào)二進(jìn)制數(shù)的表示方法問(wèn)題。

1.數(shù)的符號(hào)表示方法為了表示一個(gè)有符號(hào)數(shù),除了數(shù)值位以外還應(yīng)指定符號(hào)位,通常以這個(gè)數(shù)的最高位為符號(hào)位。我們假設(shè)討論的數(shù)為整數(shù)。12/5/202334華東師范大學(xué)電子系馬潮副教授對(duì)8位有符號(hào)二進(jìn)制整數(shù),D7為符號(hào)位,并規(guī)定D7為0表示正數(shù)的符號(hào)“+”;為1表示負(fù)數(shù)的符號(hào)“-”。因此,8位有符號(hào)數(shù)的編碼格式為:D7D6D5D4D3D2D1D0符號(hào)位

數(shù)值位這樣,數(shù)的符號(hào)在機(jī)器中也數(shù)字化了,符號(hào)位的數(shù)值位一起完整地表示有符號(hào)二進(jìn)制數(shù)。我們把一個(gè)數(shù)在機(jī)器中的表示形式稱為機(jī)器數(shù),而把它們的實(shí)際數(shù)值稱為機(jī)器數(shù)的真值。12/5/202335華東師范大學(xué)電子系馬潮副教授

2.原碼表示法如果正數(shù)的符號(hào)位用0表示,負(fù)數(shù)的符號(hào)位用1表示,絕對(duì)值的編碼規(guī)則與前面討論的無(wú)符號(hào)數(shù)編碼規(guī)則相同。這種表示方法稱為原碼表示法。一個(gè)數(shù)X的原碼記作[X]原。設(shè)X=Xn-2Xn-3…X0(即n-1位二進(jìn)制數(shù)),其中Xi為1位二進(jìn)制數(shù),i=0,1,…,(n-2)。則[X]原=0Xn-2Xn-3…X1X0當(dāng)X≥01Xn-2Xn-3…X1X0當(dāng)X≤0例1.2.1X1=+1010101則[X1]原=01010101X2=-1011101則[X2]原=1101110112/5/202336華東師范大學(xué)電子系馬潮副教授原碼表示的一個(gè)有趣情況是數(shù)0有兩種表示形式:[+0]原=00000000或[-0]原=100000008位二進(jìn)制原碼所能表示的數(shù)值范圍為-127—+127。原碼表示法簡(jiǎn)單且易于理解,與真值轉(zhuǎn)換也方便,這是它的優(yōu)點(diǎn)。缺點(diǎn)是進(jìn)行加減運(yùn)算時(shí)麻煩。如果參加運(yùn)算的數(shù)可能為正,也可能為負(fù),這時(shí)不僅要考慮運(yùn)算是加還是減,而且還要考慮數(shù)的符號(hào)和數(shù)的絕對(duì)值大小。例如兩數(shù)相加時(shí),要進(jìn)行判斷:如果兩數(shù)同號(hào),數(shù)值部分相加,符號(hào)不變;如果兩數(shù)異號(hào),不僅數(shù)值部分實(shí)際相減,而且還要比較兩數(shù)的絕對(duì)值大小,才能確定實(shí)際的被減數(shù)和減數(shù)。12/5/202337華東師范大學(xué)電子系馬潮副教授因此采用原碼表示后,將使運(yùn)算器的邏輯復(fù)雜化或增加機(jī)器運(yùn)行時(shí)間。為此,引入了補(bǔ)碼表示法,它可以使正、負(fù)數(shù)的加法和減法運(yùn)算簡(jiǎn)化為單一人相加運(yùn)算。

3.補(bǔ)碼表示法(1)補(bǔ)碼的概念根據(jù)同余的概念a+NK=a(modK)其中K為模,N為任意整數(shù)。就是說(shuō),在模的意義下,數(shù)a與該數(shù)本身加上其模的任意整數(shù)倍之和相等。12/5/202338華東師范大學(xué)電子系馬潮副教授在數(shù)a的無(wú)數(shù)個(gè)a+NK同余數(shù)中,我們感興趣的是N為1的同余數(shù),即補(bǔ)數(shù):[a]補(bǔ)數(shù)=a+K(modK)a0≤a<KK-|a|-K<a<0(2-9)由式(2-9)確定的兩種條件下數(shù)a的補(bǔ)數(shù),就是補(bǔ)碼的定義和補(bǔ)碼編碼規(guī)則的基礎(chǔ)。在計(jì)算機(jī)運(yùn)算過(guò)程中,數(shù)據(jù)的位數(shù),即字長(zhǎng)總是有限的。這里假設(shè)字長(zhǎng)為n,兩數(shù)相加求和時(shí),如果n位的最高位產(chǎn)生了進(jìn)位,就會(huì)丟掉。=12/5/202339華東師范大學(xué)電子系馬潮副教授這正是在模的意義下相加的概念。相加時(shí)丟掉的進(jìn)位即等于模。所以,當(dāng)n位表示整數(shù)時(shí)(1位為符號(hào)位,n-1位為數(shù)值位),它的模為2n,即:100……0n個(gè)0我們把X的補(bǔ)碼記為[X]補(bǔ),補(bǔ)碼可定義為:

[X]補(bǔ)=X當(dāng)0≤X<2n-1

2n+X當(dāng)-2n-1≤X<012/5/202340華東師范大學(xué)電子系馬潮副教授從定義式(2-10)可見(jiàn),正數(shù)的補(bǔ)碼與其原碼相同,只有負(fù)數(shù)才有求補(bǔ)的問(wèn)題。所以,嚴(yán)格地說(shuō),“補(bǔ)碼表示法”應(yīng)稱為“負(fù)數(shù)的補(bǔ)碼表示法”。一個(gè)二進(jìn)制數(shù),以2n為模,它的補(bǔ)碼稱為2補(bǔ)碼。(2)一個(gè)數(shù)的補(bǔ)碼的求法①根據(jù)定義求補(bǔ)碼[X]補(bǔ)=2n+X=2n-|X|,X<0例1.2.2X=-1010111,n=8,則[X]補(bǔ)=28+(-1010111B)=100000000B-1010111B=10101001B(mod28)12/5/202341華東師范大學(xué)電子系馬潮副教授這種方法要做一次減法,很不方便,一般不用。②利用原碼求補(bǔ)碼已知X=-Xn-2Xn-3…X1X0

=X<0則[X]原=2n-1+Xn-2Xn-3…X1X0由定義式(2-10)得:[X]補(bǔ)=2n+X=2n-1+2n-1-∵2n-1=12/5/202342華東師范大學(xué)電子系馬潮副教授∴[X]補(bǔ)=2n-1+=2n-1=2n-1符號(hào)位[X]原數(shù)值位按位取反

因此,一個(gè)負(fù)數(shù)X的補(bǔ)碼等于其原碼除符號(hào)位保持不變外,其余各位按位取反,再在最低位加1。

例1.2.3X=-1010101B,當(dāng)n=8時(shí),則[X]原=11010101B12/5/202343華東師范大學(xué)電子系馬潮副教授↓↓↓↓↓↓↓↓[X]補(bǔ)=10101010B+1=10101011B值得注意的是,0的補(bǔ)碼只有唯一的形式,符號(hào)位和數(shù)值位均為0。8位二進(jìn)制補(bǔ)碼所能表示的數(shù)值范圍為-128~+127。表2.2給出了8位二進(jìn)制數(shù)碼對(duì)應(yīng)的無(wú)符號(hào)二進(jìn)制數(shù)、原碼及補(bǔ)碼的值。(3)數(shù)的補(bǔ)碼表示轉(zhuǎn)換為原碼表示一個(gè)用補(bǔ)碼表示的負(fù)數(shù),如將[X]補(bǔ)再求一次補(bǔ),即將[X]補(bǔ)除符號(hào)位外取反加1就可得到[X]原,可以表示為12/5/202344華東師范大學(xué)電子系馬潮副教授12/5/202345華東師范大學(xué)電子系馬潮副教授[[X]補(bǔ)]補(bǔ)=[X]原(證明從略)例1.2.4[X]原=11010101B[X]補(bǔ)=10101011B則[[X]補(bǔ)]補(bǔ)=11010100B+1=11010101B=[X]原

因此,一個(gè)二進(jìn)制補(bǔ)碼表示的數(shù),最高位為符號(hào)位,當(dāng)符號(hào)位為“0”(即正數(shù))時(shí),它的原碼同補(bǔ)碼。當(dāng)符號(hào)位為1”(即負(fù)數(shù))時(shí),對(duì)其補(bǔ)碼再求補(bǔ),就可得到它的原碼。(4)補(bǔ)碼的運(yùn)算規(guī)則補(bǔ)碼運(yùn)算的第一個(gè)基本公式是兩個(gè)n位二進(jìn)制數(shù)之和的補(bǔ)碼等于該兩數(shù)的補(bǔ)碼之和(證明從略),即12/5/202346華東師范大學(xué)電子系馬潮副教授[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)(mod2n)(2-12)該式(2-12)表明,當(dāng)帶符號(hào)的兩個(gè)數(shù)采用補(bǔ)碼形式表示時(shí),進(jìn)行加法運(yùn)算可以把符號(hào)位和數(shù)值位一起進(jìn)行運(yùn)算(或符號(hào)位有進(jìn)位,則丟掉),結(jié)果為兩數(shù)之和的補(bǔ)碼形式。下面通過(guò)具體例子可以驗(yàn)證該公式的正確性。例1.2.5用補(bǔ)碼進(jìn)行下列運(yùn)算:(+33)+(+15);(-33)+(+15);(+33)+(-15);(-33)+(-15)。00100001B[+33]補(bǔ)11011111B[-33]補(bǔ)

+00001111B[+15]補(bǔ)+00001111B[+15]補(bǔ)00110000B[+48]補(bǔ)11101110B[-18]補(bǔ)12/5/202347華東師范大學(xué)電子系馬潮副教授00100001B[+33]補(bǔ)11011111B[-33]補(bǔ)

+11110001B[-15]補(bǔ)+11110001B[-15]補(bǔ)[1]00010010B[+18]補(bǔ)[1]11010000B[-48]補(bǔ)進(jìn)位,丟掉進(jìn)位,丟掉補(bǔ)碼運(yùn)算的第二個(gè)基本公式是兩個(gè)n位二進(jìn)制數(shù)之差的補(bǔ)碼等于該兩數(shù)的補(bǔ)碼之差(證明從略),即[X-Y]補(bǔ)=[X]補(bǔ)-[Y]補(bǔ)(mod2n)(2-13)該式(2-13)表明,當(dāng)帶符號(hào)的兩個(gè)數(shù)采用補(bǔ)碼形式表示時(shí),進(jìn)行減法運(yùn)算可以把符號(hào)位和數(shù)值位一起進(jìn)行運(yùn)算(若符號(hào)位有錯(cuò)位,則丟掉),12/5/202348華東師范大學(xué)電子系馬潮副教授結(jié)果為兩數(shù)之差的補(bǔ)碼形式。這是補(bǔ)碼表示法的一個(gè)優(yōu)點(diǎn)。下面通過(guò)具體例子可以驗(yàn)證該公式的正確性。例1.2.6用補(bǔ)碼進(jìn)行下列運(yùn)算:(+33)-(-15);(-33)-(-15);(+33)-(+15);(-33)-(+15)。00100001B[+33]補(bǔ)11011111B[-33]補(bǔ)

-11110001B[-15]補(bǔ)-11110001B[-15]補(bǔ)[1]00110000B[+48]補(bǔ)[1]11101110B[-18]補(bǔ)借位,丟掉借位,丟掉12/5/202349華東師范大學(xué)電子系馬潮副教授00100001B[+33]補(bǔ)11011111B[-33]補(bǔ)

-00001111B[+15]補(bǔ)-00001111B[+15]補(bǔ)00010010B[+18]補(bǔ)11010000B[-48]補(bǔ)補(bǔ)碼減法運(yùn)算時(shí),也可以利用加法基本公式。因?yàn)閄-Y=X+(-Y)∴[X-Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)

即[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)(mod2n)[JY](2-14)這是補(bǔ)碼運(yùn)算的第三個(gè)基本公式。12/5/202350華東師范大學(xué)電子系馬潮副教授該式表明,求[X-Y]補(bǔ)可以用[X]補(bǔ)與[-Y]補(bǔ)相加來(lái)實(shí)現(xiàn)。這里的[-Y]補(bǔ),即對(duì)減數(shù)進(jìn)行求負(fù)操作,也就是對(duì)補(bǔ)碼表示的數(shù)(無(wú)論是正數(shù)還是負(fù)數(shù))求得其相應(yīng)的用補(bǔ)碼表示的負(fù)數(shù)(如果原來(lái)是正數(shù),求負(fù)后得負(fù)數(shù);原來(lái)是負(fù)數(shù),求負(fù)后得正數(shù))。一般稱已知[Y]補(bǔ)求得[-Y]補(bǔ)的過(guò)程叫變補(bǔ)或求負(fù)。用補(bǔ)碼表示數(shù)時(shí),變補(bǔ)或求負(fù)是一種很有用的運(yùn)算。其規(guī)則是:如果已知[Y]補(bǔ)=Yn-1Yn-2…Y1Y0

那么對(duì)[Y]補(bǔ)的每一位(包括符號(hào)位)都按位取反,然后再加1,結(jié)果即為[-Y]補(bǔ)。12/5/202351華東師范大學(xué)電子系馬潮副教授例1.2.7若[Y]補(bǔ)=01010111B[+87]補(bǔ)

則[-Y]補(bǔ)=10101001B[-87]補(bǔ)

若[Y]補(bǔ)=10101001B[-87]補(bǔ)

則[-Y]補(bǔ)=01010111B[+87]補(bǔ)

顯然,兩個(gè)帶符號(hào)數(shù)采用補(bǔ)碼表示時(shí),減法運(yùn)算可以通過(guò)“變補(bǔ)相加法”來(lái)實(shí)現(xiàn)。即[X]補(bǔ)-[Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)(mod2n)(2-15)在設(shè)計(jì)運(yùn)算器時(shí),利用這一公式使減法運(yùn)算用“變補(bǔ)相加法”來(lái)實(shí)現(xiàn),使得運(yùn)算器的結(jié)構(gòu)得到了簡(jiǎn)化,這是補(bǔ)碼表示法的又一個(gè)優(yōu)點(diǎn)。12/5/202352華東師范大學(xué)電子系馬潮副教授例1.2.8用補(bǔ)碼進(jìn)行X-Y運(yùn)算。若:X=33,Y=15[X]補(bǔ)=00100001B[Y]補(bǔ)=00001111B[-Y]補(bǔ)=11110001B則00100001B[+33]補(bǔ)

+11110001B[-15]補(bǔ)[1]00010010B[+18]補(bǔ)若:X=33,Y=-15[X]補(bǔ)=00100001B[Y]補(bǔ)=11110001B[-Y]補(bǔ)=00001111B12/5/202353華東師范大學(xué)電子系馬潮副教授則00100001B[+33]補(bǔ)

+00001111B[+15]補(bǔ)00110000B[+48]補(bǔ)若:X=-33,Y=-15[X]補(bǔ)=11011111B[Y]補(bǔ)=11110001B[-Y]補(bǔ)=00001111B則11011111B[-33]補(bǔ)

+00001111B[+15]補(bǔ)

11101110B[-18]補(bǔ)12/5/202354華東師范大學(xué)電子系馬潮副教授若:X=-33,Y=15[X]補(bǔ)=11011111B[Y]補(bǔ)=00001111B[-Y]補(bǔ)=11110001B則11011111B[-33]補(bǔ)

+11110001B[-15]補(bǔ)

[1]11010000B[-48]補(bǔ)需要指出的是,一旦采用補(bǔ)碼進(jìn)行加減運(yùn)算,所有參加運(yùn)算的數(shù)和運(yùn)算的結(jié)果都是用補(bǔ)碼表示的。計(jì)算機(jī)里的實(shí)際情況就是這樣的。要得到真值,還需轉(zhuǎn)換。12/5/202355華東師范大學(xué)電子系馬潮副教授在1.1節(jié)中,我們已討論了無(wú)符號(hào)二進(jìn)制數(shù)的加減運(yùn)算規(guī)則。任意給定一個(gè)二進(jìn)制數(shù),我們可以把它看作有符號(hào)數(shù),也可以看作無(wú)符號(hào)數(shù)。其差別是如何看待最高位,看作有符號(hào)數(shù)時(shí),最高位被看作符號(hào)位;看作無(wú)符號(hào)數(shù)時(shí),最高位也看作數(shù)值位(即沒(méi)有符號(hào)位)。對(duì)于兩個(gè)無(wú)符號(hào)二進(jìn)制數(shù)的加減運(yùn)算,利用前面說(shuō)明的有符號(hào)數(shù)補(bǔ)碼表示法的加減運(yùn)算規(guī)則得到的結(jié)果仍然是正確的。12/5/202356華東師范大學(xué)電子系馬潮副教授1.2.2有符號(hào)數(shù)運(yùn)算的溢出問(wèn)題如果計(jì)算機(jī)的字長(zhǎng)為n位,n位二進(jìn)制數(shù)的最高位為符號(hào)位,其余n-1位為數(shù)值位,采用補(bǔ)碼表示法時(shí),可表示的數(shù)X的范圍為-2n-1≤X≤2n-1-1當(dāng)n=8時(shí),可表示的有符號(hào)數(shù)的范圍為-128~+127;當(dāng)n=16時(shí),可表示的有符號(hào)數(shù)的范圍為-32768~+32767。兩個(gè)有符號(hào)數(shù)進(jìn)行加減運(yùn)算時(shí),如果運(yùn)算結(jié)果超出可表示的有符號(hào)和的范圍時(shí),就會(huì)發(fā)生溢出,使計(jì)算結(jié)果出錯(cuò)。很顯然,溢出只能出現(xiàn)在兩個(gè)同號(hào)數(shù)相加或兩個(gè)異號(hào)數(shù)相減的情況下。12/5/202357華東師范大學(xué)電子系馬潮副教授具體地講,對(duì)于加運(yùn)算,如果次高位(數(shù)值部分最高位)形成進(jìn)位加入最高位,而最高位(符號(hào)位)相加(包括次高位的進(jìn)位)卻沒(méi)有進(jìn)位輸出時(shí);或者反過(guò)來(lái),次高位沒(méi)有進(jìn)位加入最高位,但最高位卻有進(jìn)位輸出時(shí),都將發(fā)生溢出。因?yàn)檫@兩種情況分別是:兩正數(shù)相加,結(jié)果超出了范圍,形式上變成了負(fù)數(shù);兩負(fù)數(shù)相加,結(jié)果超出了范圍,形式上變成了正數(shù)。01001000B+72+01100010B+9810101010B-86例2.2.9(+72)+(+98)有進(jìn)位無(wú)進(jìn)位溢出,結(jié)果出錯(cuò)12/5/202358華東師范大學(xué)電子系馬潮副教授例1.2.10(-83)+(-80)。10101101B-83+10110000B-80[1]01011101B+93無(wú)進(jìn)位有進(jìn)位溢出,結(jié)果出錯(cuò)對(duì)于減運(yùn)算,當(dāng)次高不需從最高位借位,但最高位卻需借位(正數(shù)減負(fù)數(shù),差超出范圍);或者反過(guò)來(lái),次高位需從最高位借位,但最高位不需借位(負(fù)數(shù)減正數(shù),差超出范圍),也會(huì)出現(xiàn)溢出。12/5/202359華東師范大學(xué)電子系馬潮副教授例1.2.11(+72)-(-98)。01001000B+72-1001110B-9810101010B-86無(wú)借位有借位溢出,結(jié)果出錯(cuò)例1.2.12(-83)-(+80)。10101101B-83-01010000B+8001011101B-93有借位無(wú)借位溢出,結(jié)果出錯(cuò)12/5/202360華東師范大學(xué)電子系馬潮副教授1.3定點(diǎn)數(shù)和浮點(diǎn)數(shù)1.3.1定點(diǎn)法所謂定點(diǎn)法,即小數(shù)點(diǎn)在數(shù)中的位置是固定不變的。以定點(diǎn)法表示的實(shí)數(shù)稱作定點(diǎn)數(shù)。通常,定點(diǎn)表示也有兩種方法:方法1:規(guī)定小數(shù)點(diǎn)固定在最高數(shù)值位之前,機(jī)器中能表示的所有數(shù)都是小數(shù)。n位數(shù)值部分所能表示的數(shù)N的范圍(原碼表示,下同)為1-2-n≥N≥-(1-2-n)12/5/202361華東師范大學(xué)電子系馬潮副教授它能表示的數(shù)的最大絕對(duì)值為1-2-n,最小絕對(duì)值為2-n。

方法2:規(guī)定小數(shù)點(diǎn)固定的最低數(shù)值位之后,機(jī)器中能表示的所有數(shù)都是整數(shù)。n位數(shù)值部分所能表示的數(shù)N的范圍為2n-1≥N≥-2(2n-1)它能表示的數(shù)的最大絕對(duì)值為2n-1,最小絕對(duì)值為1。下面給出定點(diǎn)數(shù)的兩種表示法。符號(hào)位·數(shù)值位·小數(shù)點(diǎn)符號(hào)位·數(shù)值位小數(shù)點(diǎn)·12/5/202362華東師范大學(xué)電子系馬潮副教授因?yàn)閷?shí)際數(shù)值很少有都是小數(shù)或都是整數(shù)的,所以定點(diǎn)表示法要求程序員做的一件重要工作是為要計(jì)算的問(wèn)題選擇“比例因子”。所有原始數(shù)據(jù)都要用比例因子化成小數(shù)或整數(shù),計(jì)算結(jié)果又要用比例因子恢復(fù)實(shí)際值。在計(jì)算過(guò)程中,中間結(jié)果若超過(guò)最大絕對(duì)值,機(jī)器便產(chǎn)生溢出,叫做“上溢”,這時(shí)必須重新調(diào)整比例因子。中間結(jié)果如果小于最小絕對(duì)值,計(jì)算機(jī)只能把它當(dāng)作0處理,叫做“下溢”,這時(shí)也必須重新調(diào)整比例因子。結(jié)于復(fù)雜計(jì)算,計(jì)算中間需多次調(diào)整比例因子。12/5/202363華東師范大學(xué)電子系馬潮副教授1.3.2浮點(diǎn)法

任意一個(gè)二進(jìn)制數(shù)N總可以寫(xiě)成下面的形式:N=±d·2±p(2-16)其中:d稱為尾數(shù),是二進(jìn)制純小數(shù),指明數(shù)的全部有效數(shù)字。前面的符號(hào)稱作數(shù)符,表示數(shù)的符號(hào),用尾數(shù)前的1位表示,0表示正號(hào),1表示負(fù)號(hào);p稱為階數(shù),它前面的符號(hào)稱作階符,用階碼前一位表示,階符為正時(shí),用0表示,階符為負(fù)時(shí),用1表示。由此可知,將尾部d的小數(shù)點(diǎn)向右(對(duì)+p)或向左(對(duì)-p)移動(dòng)p位,即得數(shù)值N。所以階符和階碼指明小數(shù)點(diǎn)的位置。小數(shù)點(diǎn)隨著p的符號(hào)和大小而浮動(dòng)。這種數(shù)稱為浮點(diǎn)數(shù)。浮點(diǎn)數(shù)的編碼格式如下所示:12/5/202364華東師范大學(xué)電子系馬潮副教授階符階碼數(shù)符尾數(shù)1位M位1位n位設(shè)階碼的位數(shù)為m位,尾數(shù)的位數(shù)為n位,則浮點(diǎn)數(shù)的取值范圍為2-n·2-(2m-1)≤|N|≤(1-2-n)·2(2m-1)浮點(diǎn)數(shù)能表示的數(shù)值范圍大,是它的主要可取之處。12/5/202365華東師范大學(xué)電子系馬潮副教授如果尾數(shù)的絕對(duì)值小于1且大于等于0.5,即采用原碼編碼的正數(shù)或負(fù)數(shù)和采用補(bǔ)碼編碼的正數(shù),其尾數(shù)的最高位數(shù)字為1;采用補(bǔ)碼編碼的負(fù)數(shù),其尾數(shù)的最高位數(shù)字為0,則該浮點(diǎn)二進(jìn)制數(shù)被稱為規(guī)格化浮點(diǎn)數(shù)。浮點(diǎn)運(yùn)算后經(jīng)常要把結(jié)果規(guī)格化,規(guī)格化的操作是尾數(shù)每右移1位(相當(dāng)于小數(shù)點(diǎn)左移1位),階碼加1;尾數(shù)每左移1位,階碼減1。數(shù)的加減運(yùn)算要求小數(shù)點(diǎn)對(duì)齊。對(duì)于浮點(diǎn)表示的數(shù)而言,就是階碼(包括階符)相等。12/5/202366華東師范大學(xué)電子系馬潮副教授使階碼相等的操作稱為對(duì)階。一個(gè)浮點(diǎn)數(shù)階碼的改變,必須伴隨著尾數(shù)的移位,才不改變數(shù)的值,即階碼加1,尾數(shù)必須右移1位;若階碼減1,則要求尾數(shù)左移1位。兩個(gè)規(guī)格化的浮點(diǎn)數(shù)相加或相減之前必須對(duì)階。對(duì)階的規(guī)則是:將兩個(gè)數(shù)中階碼小的數(shù)的尾數(shù)右移、階碼增大,直到與另一個(gè)數(shù)的階碼相等為止。這樣操作是合理的,因?yàn)槲矓?shù)右移,只可能丟失最低有效位,造成誤差較小。12/5/202367華東師范大學(xué)電子系馬潮副教授1.4二進(jìn)制編碼的十進(jìn)制數(shù)(BCD編碼)

1.4.18421BCD碼

如前所述,計(jì)算機(jī)中是使用二進(jìn)制代碼工作的。但是由于長(zhǎng)期的習(xí)慣,在日常生活中,人們最熟悉的數(shù)制是十進(jìn)制。為解決這一矛盾,提出了一人比較適合于十進(jìn)制系統(tǒng)的二進(jìn)制代碼的特殊形式,即將1位十進(jìn)制的0~9這十個(gè)數(shù)字分別用4位二進(jìn)制碼的組合來(lái)代表,在此基礎(chǔ)上,可按位對(duì)任意十進(jìn)制數(shù)進(jìn)行編碼。這就是二進(jìn)制編碼的十進(jìn)制數(shù),簡(jiǎn)稱BCD碼(Binary-CodcdDecimal)。12/5/202368華東師范大學(xué)電子系馬潮副教授4位二進(jìn)制數(shù)碼有16種組合,原則上可任選其中的10種作為代碼,分別代表十進(jìn)制中0到9這10個(gè)數(shù)字。為便于記憶和比較直觀,最常用的方法是8421BCD碼,8、4、2、1分別是4位二進(jìn)制數(shù)的位權(quán)值。表2.3給出了十進(jìn)制數(shù)和二進(jìn)制碼的對(duì)應(yīng)關(guān)系。這種BCD碼與十進(jìn)制數(shù)的關(guān)系直觀,其相互轉(zhuǎn)換也很簡(jiǎn)單。例2.4.1十進(jìn)制數(shù)和BCD碼相互轉(zhuǎn)換將十進(jìn)制數(shù)75.4轉(zhuǎn)換為BCD碼75.4=(01110101.0100)BCD

將BCD碼10000101.0101轉(zhuǎn)換為十進(jìn)制數(shù)12/5/202369華東師范大學(xué)電子系馬潮副教授12/5/202370華東師范大學(xué)電子系馬潮副教授(10000101.0101)BCD=85.5同一個(gè)8位二進(jìn)制代碼表示的數(shù),當(dāng)認(rèn)為它表示的是二進(jìn)制數(shù)和認(rèn)為它表示的是二進(jìn)制編碼的十進(jìn)制數(shù)時(shí),數(shù)值是不相同的。例如00011000作為二進(jìn)制數(shù)時(shí),其值為24;但作為2位BCD碼時(shí),其值為18。在計(jì)算機(jī)中,BCD碼有兩種基本格式:組合式BCD碼格式和分離式BCD碼格式。在組合式BCD碼格式中,兩位十進(jìn)制數(shù),存放在一個(gè)字節(jié)中。如數(shù)82存放格式為:10000010

12/5/202371華東師范大學(xué)電子系馬潮副教授在分離BCD碼格式中,每位數(shù)存放在8位字節(jié)的低4位部分,高4位部分的內(nèi)容與數(shù)值無(wú)關(guān),如數(shù)82存放格式為:uuuu1000uuuu0010其中u表示任意。12/5/202372華東師范大學(xué)電子系馬潮副教授1.4.2BCD碼的加減運(yùn)算

下面我們以組合式BCD碼格式為例討論BCD碼的加法與減法運(yùn)算。由于BCD編碼是將每個(gè)十進(jìn)制數(shù)用一組4位二進(jìn)制數(shù)來(lái)表示,因此,若將這種BCD碼直接交計(jì)算機(jī)去運(yùn)算,由于計(jì)算機(jī)總是把數(shù)當(dāng)作二進(jìn)制數(shù)來(lái)運(yùn)算,所以結(jié)果可能出錯(cuò)。例2.4.2用BCD碼求38+49。0011100038的BCD碼+0100100149的BCD碼1000000181的BCD碼12/5/202373華東師范大學(xué)電子系馬潮副教授對(duì)應(yīng)十進(jìn)制數(shù)為81,正確結(jié)果應(yīng)為87,顯然結(jié)果是錯(cuò)誤的。其原因是,十進(jìn)制數(shù)相加應(yīng)當(dāng)是“逢十進(jìn)一”,而計(jì)算機(jī)按二進(jìn)制數(shù)運(yùn)算,每4位為一組,低4位向高4位進(jìn)位與十六進(jìn)制數(shù)低位向高位的情況相當(dāng),是“逢十六進(jìn)一”,所以當(dāng)相加結(jié)果超過(guò)9時(shí)將比正確結(jié)果少6。因此,結(jié)果出錯(cuò)。解決的辦法是對(duì)二進(jìn)制加法運(yùn)算的結(jié)果采用“加6修正”,將二進(jìn)制加法運(yùn)算的結(jié)果修正為BCD碼加法運(yùn)算的結(jié)果。兩個(gè)兩位BCD數(shù)相加時(shí),對(duì)二進(jìn)制加法運(yùn)算結(jié)果修正的規(guī)則如下:(1)如果任何兩個(gè)對(duì)應(yīng)位BCD數(shù)相加的結(jié)果向高一位無(wú)進(jìn)位時(shí),若得到的結(jié)果小于或等于9,則該位不需修正;若得到的結(jié)果大小9且小于16位,則該位進(jìn)行加6修正。12/5/202374華東師范大學(xué)電子系馬潮副教授(2)如果任何兩個(gè)對(duì)應(yīng)位BCD數(shù)相加的結(jié)果向高一位有進(jìn)位時(shí)(即結(jié)果大于或等于16),該位進(jìn)行加6修正。(3)低位修正結(jié)果使高位大于9時(shí),高位進(jìn)行加6修正。這種修正稱為BCD調(diào)整。下面通過(guò)例題驗(yàn)證上述規(guī)則的正確性。2.4.3用BCD碼求35+21。0011010135+0010000121010101105612/5/202375華東師范大學(xué)電子系馬潮副教授低4位,高4位均不滿足修正法則,所以結(jié)果正確,不需修正。例2.4.4用BCD碼求25+37。0010010125+001101113701011100低4位滿足法則1+00000110加6修正0110001062結(jié)果正確112/5/202376華東師范大學(xué)電子系馬潮副教授例2.4.5用BCD碼求38+49。0011100038+010010014910000001低4位滿足法則2+00000110加6修正1000011187結(jié)果正確1例2.4.6用BCD碼求42+95。0100001042+1001010195

12/5/202377華東師范大學(xué)電子系馬潮副教授11010111高4位滿足法則1+01100000加6修正[1]00110111137結(jié)果正確1例2.4.7用BCD碼求91+83。1001000191+1000001183[1]00010100高4位滿足法則2+01100000加6修正[1]01110100174結(jié)果正確112/5/202378華東師范大學(xué)電子系馬潮副教授例2.4.8用BCD碼求94+7。1001010094+00000111710011011低4位滿足法則1+00000110加6修正10100001高4位滿足法則3+01100000加6修正[1]00000001101結(jié)果正確12/5/202379華東師范大學(xué)電子系馬潮副教授例2.4.9用BCD碼求76+45。0111011076+010001014510111011低4位、高4位均滿足法則1+01100110同時(shí)加6修正[1]00100001121結(jié)果正確112/5/202380華東師范大學(xué)電子系馬潮副教授兩個(gè)BCD碼進(jìn)行減法運(yùn)算時(shí),當(dāng)?shù)臀幌蚋呶挥薪栉粫r(shí),由于“借一作十六”與“借一作十”的差別,將比正確結(jié)果多6,所以有借位時(shí),可采用“減6修正法”來(lái)修正。實(shí)際上,計(jì)算機(jī)中有BCD調(diào)整指令,兩個(gè)BCD碼進(jìn)行加減時(shí),先按二進(jìn)制加減指令進(jìn)行運(yùn)算,再對(duì)結(jié)果用BCD調(diào)整指令進(jìn)行調(diào)整,就可得到正確的十進(jìn)制運(yùn)算結(jié)果。另外,BCD碼的加減運(yùn)算,也可以在運(yùn)算前由程序先變換成二進(jìn)制,然后由計(jì)算機(jī)對(duì)二進(jìn)制數(shù)運(yùn)算處理,運(yùn)算以后再將二進(jìn)制數(shù)結(jié)果由程序轉(zhuǎn)換為BCD碼。12/5/202381華

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論