第2章 計算機中的數(shù)制和編碼(2h)_第1頁
第2章 計算機中的數(shù)制和編碼(2h)_第2頁
第2章 計算機中的數(shù)制和編碼(2h)_第3頁
第2章 計算機中的數(shù)制和編碼(2h)_第4頁
第2章 計算機中的數(shù)制和編碼(2h)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

西郵計算機學院第2章計算機中的數(shù)制和編碼主要內(nèi)容簡要介紹無符號數(shù)的表示方法、各種數(shù)制的相互轉(zhuǎn)換以及二進制數(shù)的運算規(guī)則;重點介紹帶符號數(shù)的表示方法、補碼加減法運算以及運算時溢出的判斷方法;十進制數(shù)的二進制編碼、字符的ASCII編碼補碼的表示及其運算溢出和進位的區(qū)別,補碼運算溢出的判斷方法1234章節(jié)安排計算機中的數(shù)制二進制運算計算機中的碼制符號數(shù)表示法引言二進制數(shù)及其編碼是所有微型計算機的基本語言,主要有以下優(yōu)點:二進制在物理上容易實現(xiàn);運算規(guī)則簡單;采用二進制邏輯性強,用十六進制數(shù)表示和處理二進制數(shù)也極為方便。因此,建立這些數(shù)和編碼的雄厚基礎,對于深入學習微型計算機是非常重要的。2.1計算機中的數(shù)制2.1.1十進制數(shù)制區(qū)別一種數(shù)制的基本特征是底數(shù)或基數(shù)。底數(shù)表示所用的字符或數(shù)碼的數(shù)目,這些字符表示數(shù)制中量的大小。十進制數(shù)引用0~9十個數(shù)碼表示量的大小,故底數(shù)為101.按位計數(shù)法:十進制是有位、數(shù)的數(shù)制。即一個數(shù)中的每位都有特定的權,此權決定其數(shù)值的大小,每個位權由底數(shù)的n次冪確定。1.按位計數(shù)法100=1 105=100000 101=10106=1000000 102=100 107=10000000 103=1000 108=100000000 104=10000 109=1000000000例如:十進制數(shù)4603

按位計數(shù)表示為

4*103+6*102+0*101+3*100 =4000+600+00+3 =46032.小數(shù)十進制小數(shù)也是具有位權的數(shù),其權都是10的負n次冪 10-1=0.1 10-5=0.0000110-2=0.01 10-6=0.00000110-3=0.001 10-7=0.000000110-4=0.0001 10-8=0.00000001

小數(shù)點把一個數(shù)分為整數(shù)和小數(shù)兩部分。如十進制數(shù)278.94,用按位計數(shù)法表示為:

2*102+7*101+8*100+9*10-1+4*10-2=200+70+8+0.9+0.04=278.94

即:每位數(shù)字乘以它所在的權,相加則得所求的數(shù)值。2.1.2二進制數(shù)制按位計數(shù)法中最簡單的是二進制。它只包括兩個元素或狀態(tài),即1和0

。1.按位計數(shù)法和十進制數(shù)一樣,二進制數(shù)的每一位所在的位置均帶有一個確定數(shù)值大小的特定權。20=12 24=100002 21=102 25=100000222=1002 26=1000000223=10002 27=100000002例如,二進制數(shù)1101012按位計數(shù)為:

1*25+1*24+0*23+1*22+0*21+1*20=100000+10000+000+100+00+1=11010122.二進制小數(shù)把二進制小數(shù)表示為2

的負n次冪。

2-1=0.12 2-2=0.012 2-3=0.0012 2-4=0.00012 2-5=0.000012 2-6=0.0000012 2-7=0.00000012 2-8=0.000000012例如,二進制數(shù)0.1101按位表示為:

1*2-1+1*2-2+0*2-3+1*2-4=1*0.12+1*0.012+0*0.0012+1*0.00012=0.12+0.012+0.0002+0.00012=0.1101211(1)二——十進制轉(zhuǎn)換把二進制數(shù)轉(zhuǎn)換成相應的十進制數(shù),只要將二進制中出現(xiàn)1的所在位權(轉(zhuǎn)換為十進制)相加即可。整數(shù)和小數(shù)位權如下:

整數(shù)小數(shù)272625242322212012864321684212-12-22-3.5.25.125.3.二進制數(shù)和十進制數(shù)的轉(zhuǎn)換3.二進制數(shù)和十進制數(shù)的轉(zhuǎn)換例:把二進制數(shù)101101.11轉(zhuǎn)換成相應的十進制數(shù):二進制數(shù)101101.11

位權2524232221202-12-2十進制數(shù)32+0+8+4+0+1+0.5+0.25 =45.75(2)十進制——二進制轉(zhuǎn)換把一個十進制的整數(shù)依次除以所需要的底數(shù),就能夠轉(zhuǎn)換成不同底數(shù)的數(shù)。如:把十進制的數(shù)轉(zhuǎn)換成相應的二進制數(shù),只要把十進制數(shù)依次除以2并記下每次所得的余數(shù)(余數(shù)總是

1

0),所得的余數(shù)即為相應的二進制數(shù)。3.二進制數(shù)和十進制數(shù)的轉(zhuǎn)換例如,把十進制數(shù)25轉(zhuǎn)換成二進制數(shù):25/2=12

余數(shù)1LSB(leastsignificantbit)12/2=606/2=303/2=111/2=01MSB(mostsignificantbit

收集余數(shù),得到110012=2510

要將一個十進制小數(shù)轉(zhuǎn)換成不同底數(shù)或基數(shù)的數(shù)時,則應把所需的底數(shù)或基數(shù)連續(xù)不斷地乘以該十進制小數(shù),并且記錄所得的溢出數(shù)(即整數(shù)部分),直到小數(shù)得

0為止。3.二進制數(shù)和十進制數(shù)的轉(zhuǎn)換例:將十進制數(shù)0.3125轉(zhuǎn)換成相應的二進制數(shù)

0.3125*2=0.625=0.625

溢出

0MSB

0.6250*2=1.250=0.250

溢出

1

0.2500*2=0.500=0.500

溢出

0

0.5000*2=1.000=0

溢出

1LSB

即:0.3125=0.01012

如果十進制數(shù)包含整數(shù)和小數(shù)兩部分,則必須將小數(shù)點兩邊的整數(shù)和小數(shù)分開,分別完成相應的轉(zhuǎn)換,再把二進制整數(shù)和小數(shù)部分組合在一起。3.二進制數(shù)和十進制數(shù)的轉(zhuǎn)換3.二進制數(shù)和十進制數(shù)的轉(zhuǎn)換例如,將十進制數(shù)14.375轉(zhuǎn)換成相應的二進制數(shù):

14.375=14+0.37514/2=7余數(shù)0LSM

0.375*2=0.75溢出0MSB

7/2=31

0.750*2=1.501

3/2=1

1

0.500*2=1.01LSB

1/2=0

1MSB即:14=11102

即:0.375=0.0112所以,14.375 =14+0.375=11102+0.0112=1110.01122.1.3十六進制數(shù)制二進制數(shù)書寫和閱讀均不方便,故采用十六進制數(shù)來縮寫相應的二進制數(shù)。顧名思義,十六進制以1610為底,用數(shù)字0~9和字母A~F表示。十進制數(shù)與十六進制數(shù)、二進制數(shù)的關系如下:十進制十六進制二進制000000110001220010330011440100550101660110770111十進制十六進制二進制88100099100110A101011B101112C110013D110114E111015F11112.2計算機中的碼制2.2.1二進制編碼的十進制

(BCD——披著二進制皮的十進制數(shù))盡管用二進制工作有很多硬件設備方面的優(yōu)點,但轉(zhuǎn)換和認出二進制的大小還是要花費相當多的時間,這是一個明顯的缺點。BCD(BinaryCodedDecimal)編碼使用四位二進制碼表示0~9個十進制數(shù)。它采用標準的8421的純二進制碼的位權值,也稱為8421BCD編碼。因許多數(shù)字設備、儀器儀表均用十進制輸入輸出,故BCD碼被廣泛使用。十進制8421BCD二進制000000000100010001200100010300110011401000100501010101601100110701110111810001000910011001100001000010101100010001101112000100101100130001001111011400010100111015000101011111

用BCD碼表示十進制數(shù),只要把每個十進制數(shù)用適當?shù)亩M制4位碼代替即可。例如,834用BCD碼表示為:

100000110100BCD例如,0.7640.011101100100BCD例如,將BCD數(shù)轉(zhuǎn)換成相應的十進制數(shù):011000101000.100101010111BCD=628.9571.壓縮型BCD碼壓縮型BCD碼是用一個字節(jié)表示兩位十進制數(shù)。例如:2900101001BCD

8610000110BCD2.非壓縮型BCD碼非壓縮型BCD碼用一個字節(jié)表示一位十進制數(shù)。高4位總是0000,低4位用0000~1001中的一種組合來表示0~9中的某一個十進制數(shù)。例如:900001001BCD3.BCD碼運算的修正如果兩個對應位BCD數(shù)相加的結果向高位無進位,且結果小于或等于9,則該位不需要修正;若結果大于9小于16,則該位需要加6修正。如果兩個對應位BCD數(shù)相加的結果向高位有進位(結果大于或等于16),則該位需要進行加6修正。因此,兩個數(shù)進行運算時,首先按二進制數(shù)進行運算,然后必須用相應的調(diào)整指令進行調(diào)整,從而得到正確的BCD碼結果。4.總結BCD碼的一個優(yōu)點就是十個BCD碼的組合格式容易記憶。一旦你能用二進制數(shù)工作,對BCD碼就可以像十進制數(shù)一樣迅速自如地讀出。同理也可以很快得出以BCD碼表示的十進制數(shù)。例如:011000101000.10010100100BCD=628.95410BCD碼可以簡化人機聯(lián)系,但比純二進制碼效率低。對同一個給定的十進制數(shù),用BCD碼表示的位數(shù)比純二進制碼表示的位數(shù)要多。如:83,純二進制碼表示為1010011,只需七位。用BCD碼表示時,為10000011,需八位。4.總結BCD碼效率低,原因是每位數(shù)據(jù)都需要某些數(shù)字電路和他對應,這使得與BCD碼連接的附加電路成本提高,設備的復雜性增加,功率消耗較大。用BCD碼進行的運算所花的時間比純二進制碼要多,而且復雜。用二進制四位可以表示24=16中不同狀態(tài)的數(shù),即:0~15個十進制數(shù)。而BCD數(shù)制,10~15中有六個狀態(tài)被浪費掉。所以,采用BCD數(shù)之后,為了改善數(shù)字設備與操作者間的通信,而損失了某些效率——代價。4.總結十進制—BCD碼的轉(zhuǎn)換是簡單和直接的。但二進制—BCD碼的轉(zhuǎn)換就不能直接實現(xiàn),必須先將二進制轉(zhuǎn)換成十進制,然后再轉(zhuǎn)換成BCD碼。

例如:將二進制1011.01轉(zhuǎn)換成相應的BCD碼。

首先,將二進制數(shù)轉(zhuǎn)換成十進制數(shù)

1011.01=1*23+0*22+1*21+1*20+0*2-1+1*2-2=11.25

然后,將十進制結果轉(zhuǎn)換成BCD碼:

00010001.00100101BCD

然后,將十進制結果轉(zhuǎn)換成二進制數(shù)

96.625=96+0.62596/2=48 余數(shù)0 0.625*2=1.25 溢出148/2=24 0 0.25*2=0.50 024/2=12 0 0.50*2=1.0 112/2=6 0 6/2=3

03/2=1

11/2=0

1

10010110.011000100101BCD=1100000.1012將BCD碼轉(zhuǎn)換成二進制數(shù),則完成上述運算的逆運算即可。

例如:將BCD碼10010110.011000100101轉(zhuǎn)換成相應的二進制數(shù)。

首先,將BCD碼轉(zhuǎn)換成十進制數(shù):

10010110.011000100101=96.6254.總結2.2.2ASCII碼行012345678910111213141576543210000010100111001011101110000NULDLESP0@P\p0001SOHDC1!1AQaq0010STXDC2“2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB‘7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\l|1101CRGS-=M]m}1110SORS.>N^n~1111SIUS/?O_oDEL列012345672.3二進制運算2.3.1

二進制加法加法的四條規(guī)則:例如,100011112加101101012

(1)0+0=0

(2)0+1=1

(3)1+1=0進位1

10110101

(4)1+1+1=1進位1

+10001111101000100

2.3.2二進制減法二進制減法的四條規(guī)則:

(1)0-0=0

(2)1-1=0

(3)1-0=1

(4)0-1=1

借位1

例如,110001002減001001012

1011110110

(借位以后的被減數(shù))

11000100

—00100101

100111112.3.3二進制乘法二進制乘法規(guī)則:(1)0*0=0(2)0*1=0(3)1*0=0(4)1*1=1例如,11112乘110121111*1101*111100000000(進位)

11111111111100(進位)

100101111111111000(進位)110000112.3.4二進制除法除法是乘法的逆運算。因此,它是確定一個數(shù)可以從另一個數(shù)中減多少次的過程。例如,1000112被1012除。

000111

101100011

被除數(shù)

101

111

余數(shù)

101

101

余數(shù)

101

0

余數(shù)

2.4符號數(shù)的表示法2.4.1符號數(shù)的表示法:原碼、反碼、補碼(1)原碼

采用這種方法時,一個二進制數(shù)同時包含有符號(+或-)和數(shù)量。因此正值和負值表示如下:

+4510=0

01011012

符號數(shù)量

-4510=1

010110122.4符號數(shù)的表示法(2)反碼

用這種方法時,正數(shù)表示法與原碼的表示方法一樣。如

+410=0

00001002+12710=0

11111112

負數(shù)表示為正數(shù)的反碼。一個數(shù)的反碼是把所有0變成1,所有1變成0而形成的。如上所示,

-410=111110112-12710=1

00000002(2)反碼位組合格式無符號二進制數(shù)反碼000000000+0000000011+1000000102+2000000113+3******01111100124+12401111101125+12501111110126+12601111111127+12710000000128-12710000001129-12610000010130-12510000011131-124******11111100252-311111101253-211111110254-111111111255-0(3)補碼

用這種方法,正數(shù)與原碼以及反碼法一樣表示,即:它對+12710以下的所有正值使用同樣的位組合格式,而負數(shù)則表示為正數(shù)的補碼。

一個數(shù)的補碼是把這個數(shù)的反碼再加1形成的。例如,-4為+4(00000100)的補碼。

111110112+1

111111002注意:8位補碼數(shù)的范圍是從-12810到+12710;

0只有一種表示法。位組合格式無符號二進制數(shù)補碼反碼0000000000+0000000011+1+1000000102+2+2000000113+3+3********01111100124+124+12401111101125+125+12501111110126+126+12601111111127+127+12710000000128-128-12710000001129-127-12610000010130-126-12510000011131-125-124****11111100252-4-311111101253-3-211111110254-2-111111111255-1-02.4.2補碼的運算

補碼表示法的特征:同一個電路既可用于無符號數(shù)相加,也可用于有符號數(shù)相加。例如,無符號數(shù)132和14相加

100001002132 000011102+14 100100102146

看上面給出的例子,如果假定輸入是有符號的補碼數(shù),則為:100001002-124

000011102+14

100100102-1101.帶符號數(shù)的運算(1)正數(shù)相加例如,+7加+3

00000111+7

+0

0000011+3

00001010+10

注意:能表示為補碼形式的最大8位正數(shù)是+127,如果超

過這個值便產(chǎn)生錯誤。例如,+65加+67

01000001

+01000011

10000100例如,+7加-3

00000111(+7)

+11111101+(-3)

100000100(+4)丟掉最后的進位

注意:如果忽略進位位,則和是正確的。請記住MPU相加

兩個數(shù)時,是把它們看作無符號的二進制數(shù)。例如,-9加+8

11110111(-9)

+

00001000+(+8)

11111111(-1)

注意:和是-1的補碼表示法(2)正數(shù)和負數(shù)相加例如,-3與-4相加

11111101(-3)

+11111100+(-4)

111111001(-7)

丟掉最后的進位

注意:能用8位表示的最大負數(shù)是-128。

例如,-120加-18

10001000(-120)

+11101110+(-18)

101110110-138

注意:和的符號位是0。

(3)負數(shù)相加(4)溢出的判斷

1.進位與溢出: 進位是指運算結果的最高位向更高位的進位,用來判斷無符號數(shù)運算結果是否超出了計算機所能表示的最大無符號數(shù)的范圍。 溢出是指帶符號數(shù)的補碼運算的溢出,用來判斷帶符號數(shù)補碼運算結果是否超出了補碼所能表示的范圍。

2.溢出的判斷:

若OF=1,結果溢出。若OF=0,則結果未溢出。CFDF例

設有兩個操作數(shù)x=01000100B,y=01001000B,將這兩個操作數(shù)送運算器做加法運算,試問:①若為無符號數(shù),計算結果是否正確?②若為帶符號補碼數(shù),計算結果是否溢出?解:

若為無符號數(shù),由于CF=0,說明結果未超出8位無符號數(shù)所能表達的數(shù)值范圍(0

255),計算結果10001100B為無符號數(shù),其真值為140,計算結果正確。若為帶符號數(shù)補碼,由于(CF⊕DF)=1,結果溢出;這里也可通過參加運算的兩個數(shù)的符號及運算結果的符號進行判斷,由于兩操作數(shù)均為正數(shù),而結果卻為負數(shù),因而結果溢出;+68和+72兩數(shù)補碼之和應為+140的補碼,而8位帶符號數(shù)補碼所能表達的數(shù)值范圍為?128

+127,結果超出該范圍,因此結果是錯誤的。2.無符號二進制數(shù)減法運算例如,69減26 0100010169 -00011010-26 0010101143

01000101

+11100110

100101011

丟掉最后的進位

3.邏輯運算(1)“與”運算(AND)

“與”函數(shù)產(chǎn)生兩個或兩個以上邏輯變量的邏輯積。

A*B=C

即:如果所有輸入變量是邏輯1,則其“與”運算的邏輯積是邏輯1。如果輸入變量中任意一個是邏輯0,則邏輯積是0。全1為1,有0出0。3.邏輯運算(續(xù))例:把10011101和11000110相“與”

1*1=1MSB0*1=00*0=01*0=01*0=01*1=10*1=01*0=0LSB可應用于:清零,判別、屏蔽高字節(jié)。輸入輸出ABC0000101001113.邏輯運算(續(xù))(2)“或”運算(OR)

“或”函數(shù)產(chǎn)生兩個或兩個以上邏輯變量的邏輯和。即有1出1,全0為0。

A+B=C

A、B表示輸入變量,而C表示輸出或者“或”運算的邏輯和。不要把此“+”號和數(shù)學的“+”號弄混。3.邏輯運算(續(xù))例:把10011101和11000101相“或”

1+1=1MSB

0+1=10+0=01+0=11+0=11+1=10+0=01+1=1LSB

溫馨提示

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

評論

0/150

提交評論