




已閱讀5頁(yè),還剩73頁(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)介
第1章 預(yù)備知識(shí)(數(shù)制與碼制),1.1 進(jìn)位計(jì)數(shù)制及各計(jì)數(shù)制間的轉(zhuǎn)換 1.2 二進(jìn)制數(shù)的運(yùn)算 1.3 帶符號(hào)數(shù)的表示方法 原碼、反碼、補(bǔ)碼 1.4 定點(diǎn)數(shù)與浮點(diǎn)數(shù) 1.5 BCD碼和ASCII碼,1.1 進(jìn)位計(jì)數(shù)制及各計(jì)數(shù)制間的轉(zhuǎn)換,數(shù)制是人們對(duì)事物數(shù)量計(jì)數(shù)的一種統(tǒng)計(jì)規(guī)律。在日常生活中最常用的是十進(jìn)制,但在計(jì)算機(jī)中,由于其電氣元件最易實(shí)現(xiàn)的是兩種穩(wěn)定狀態(tài):器件的“開(kāi)”與“關(guān)”;電平的“高”與“低”。因此,采用二進(jìn)制數(shù)的“0”和“1”可以很方便地表示機(jī)內(nèi)的數(shù)據(jù)運(yùn)算與存儲(chǔ)。在編程時(shí),為了方便閱讀和書寫,人們還經(jīng)常用八進(jìn)制數(shù)或十六進(jìn)制來(lái)表示二進(jìn)制數(shù)。雖然一個(gè)數(shù)可以用不同計(jì)數(shù)制形式表示它的大小,但該數(shù)的量值則是相等的。,1.1.1進(jìn)位計(jì)數(shù)制 當(dāng)進(jìn)位計(jì)數(shù)制采用位置表示法時(shí),同一數(shù)字在不同的數(shù)位所代表的數(shù)值是不同的。每一種進(jìn)位計(jì)數(shù)應(yīng)包含兩個(gè)基本的因素: (1)基數(shù)R(Radix):它代表計(jì)數(shù)制中所用到的數(shù)碼個(gè)數(shù)。如:二進(jìn)制計(jì)數(shù)中用到0和1兩個(gè)數(shù)碼;而八進(jìn)制計(jì)數(shù)中用到07共八個(gè)數(shù)碼。一般地說(shuō),基數(shù)為R的計(jì)數(shù)制(簡(jiǎn)稱R進(jìn)制)中,包含0、1、R-1個(gè)數(shù)碼,進(jìn)位規(guī)律為“逢R進(jìn)1”。,(2)位權(quán)W(Weight):進(jìn)位計(jì)數(shù)制中,某個(gè)數(shù)位的值是由這一位的數(shù)碼值乘以處在這一位的固定常數(shù)決定的,通常把這一固定常數(shù)稱之為位權(quán)值,簡(jiǎn)稱位權(quán)。各位的位權(quán)是以R為底的冪。如十進(jìn)制數(shù)基數(shù)R=10,則個(gè)位、十位、百位上的位權(quán)分別為100,101,102。 一個(gè)R進(jìn)制數(shù)N,可以用以下兩種形式表示: (1)并列表示法,或稱位置計(jì)數(shù)法: (N)R(K n-1 K n-2K1K0K-1 K -2K-m)R,(2)多項(xiàng)式表示法,或稱以權(quán)展開(kāi)式: (N)RK n-1 R n-1K n-2 R n-2K1R1K0R0 K-1 R-1K-m R-m= 其中:m、n為正整數(shù),n代表整數(shù)部分的位數(shù);m代表小數(shù)部分的位數(shù);Ki代表R進(jìn)制中的任一個(gè)數(shù)碼,0KiR-1。 1.二進(jìn)制數(shù) 二進(jìn)制數(shù),R2,Ki取0或1,進(jìn)位規(guī)律為“逢2進(jìn)1”。任一個(gè)二進(jìn)制數(shù)N可表示為:,(N)2K n-1 2 n-1K n-2 2 n-2K121K020-1-1K-m 2-m (1 1) 例如:(1001.101)2=12302202112012-102-2 2. 八進(jìn)制數(shù) 八進(jìn)制,R8,Ki可取07共8個(gè)數(shù)碼中的任意1個(gè),進(jìn)位規(guī)律為“逢8進(jìn)1”。任意一個(gè)八進(jìn)制數(shù)N可以表示為: (N)8K n-1 8 n-1K n-2 8 n-2K181K080 K-1 8-1K-m 8-m (12) 例如:(246.12)828248168018-128-2,3.十六進(jìn)制數(shù) 十六進(jìn)制數(shù),16,i可取015共16個(gè)數(shù)碼中的任一個(gè),但1015分別用A、B、C、D、E、F表示,進(jìn)位規(guī)律為“逢16進(jìn)1”。任意一個(gè)十六進(jìn)制數(shù)可表示為: (N)16K n-1 16 n-1K n-2 16 n-2K1161K0160K-1 16-1K-m 16 m (13) 例如:(2D07.A)16216313162016171601016 -1,表11給出了以上3種進(jìn)制數(shù)與十進(jìn)制數(shù)的對(duì)應(yīng)關(guān)系。為避免混淆,除用(N)R的方法區(qū)分不同進(jìn)制數(shù)外,還常用數(shù)字后加字母作為標(biāo)注。其中字母B(Binary)表示二進(jìn)制數(shù);字母Q(Octal的縮寫為字母O,為區(qū)別數(shù)字0故寫成Q)表示八進(jìn)制數(shù);字母D(Decimal)或不加字母表示十進(jìn)制數(shù);字母H(Hexadecimal)表示十六進(jìn)制數(shù)。,表11二、八、十、十六進(jìn)制數(shù)碼對(duì)應(yīng)表,1.1.2 各種進(jìn)制數(shù)間的相互轉(zhuǎn)換 1.各種進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù) 各種進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)的方法是:將各進(jìn)制數(shù)先按權(quán)展成多項(xiàng)式,再利用十進(jìn)制運(yùn)算法則求和,即可得到該數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)。 例1: 將數(shù)1001.101B,246.12Q,2D07.AH轉(zhuǎn)換為十進(jìn)制數(shù)。 1001.101B12302202112012102-212-3 810.50.1259.625,246.12Q28248168018-128-2 1283260.1250.03125166.15625 2D07.AH216313162016171601016-1 8192332870.62511527.625,2.十進(jìn)制數(shù)轉(zhuǎn)換為二、八、十六進(jìn)制數(shù) 任一十進(jìn)制數(shù)N轉(zhuǎn)換成q進(jìn)制數(shù),先將整數(shù)部分與小數(shù)部分分為兩部分,并分別進(jìn)行轉(zhuǎn)換,然后再用小數(shù)點(diǎn)將這兩部分連接起來(lái)。 1)整數(shù)部分轉(zhuǎn)換 整數(shù)部分轉(zhuǎn)換步驟為: 第1步:用去除N的整數(shù)部分,得到商和余數(shù),記余數(shù)為進(jìn)制整數(shù)的最低位數(shù)碼K0;,第2步:再用q去除得到的商,求出新的商和余數(shù),余數(shù)又作為q進(jìn)制整數(shù)的次低位數(shù)碼K1; 第3步:再用q去除得到的新商,再求出相應(yīng)的商和余數(shù),余數(shù)作為q進(jìn)制整數(shù)的下一位數(shù)碼Ki; 第4步:重復(fù)第3步,直至商為零,整數(shù)轉(zhuǎn)換結(jié)束。此時(shí),余數(shù)作為轉(zhuǎn)換后q進(jìn)制整數(shù)的最高位數(shù)碼K n-1。,2|168 2|84 余數(shù)0, K00 2|42 余數(shù)0, K10 2|21 余數(shù)0, K20 2|10 余數(shù)1, K31 2|5 余數(shù)0, K40 8|168 2|2 余數(shù)1, K51 8|21余數(shù)0, K00 16|168 2|1 余數(shù)0, K60 8|2余數(shù)5, K1516 16 |10余數(shù)8, K08 0 余數(shù)1, K71 0余數(shù)2 , K22 0 余數(shù)10,K1A 16810101000B 168250Q 168A8H,2)小數(shù)部分轉(zhuǎn)換 小數(shù)部分轉(zhuǎn)換步驟為: 第1步:用q去乘N的純小數(shù)部分,記下乘積的整數(shù)部分,作為q進(jìn)制小數(shù)的第1個(gè)數(shù)碼K-1; 第2步:再用q去乘上次積的純小數(shù)部分,得到新乘積的整數(shù)部分,記為q進(jìn)制小數(shù)的次位數(shù)碼K-i; 第3步:重復(fù)第2步,直至乘積的小數(shù)部分為零,或者達(dá)到所需要的精度位數(shù)為止。此時(shí),乘積的整數(shù)位作為q進(jìn)制小數(shù)位的數(shù)碼K-m。,例3: 將0.686轉(zhuǎn)換成二、八、十六進(jìn)制數(shù)(用小數(shù)點(diǎn)后5位表示)。 0.6862=1.372K-1=1 0.6868=5.488K-1=5 0.68616=10.976K-1=A 0.3722=0.744K-2=0 0.4888=3.904K-2=3 0.97616=15.616K-2=F 0.7442=1.488K-3=1 0.9048=7.232K-3=7 0.61616=9.856K-3=9 0.4882=0.976K-4=0 0.2328=1.856K-4=1 0.85616=13.696K-4=D 0.9762=1.952K-5=1 0.8568=6.848K-5=6 0.69616=11.136K-5=B 0.6860.10101B 0.6860.53716Q 0.6860.AF9DBH,例4: 將168.686轉(zhuǎn)換為二、八、十六進(jìn)制數(shù)。根據(jù)例2、例3可得: 168.68610101000.10101B 168.686250.53716Q 168.686A8.AF9DBH,從以上例子可以看出,二進(jìn)制表示的數(shù)愈精確,所需的數(shù)位就愈多,這樣,不利于書寫和記憶,而且容易出錯(cuò)。另外,若用同樣數(shù)位表示數(shù),則八、十六進(jìn)制數(shù)所表示數(shù)的精度較高。所以在匯編語(yǔ)言編程中常用八進(jìn)制或十六進(jìn)制數(shù)作為二進(jìn)制數(shù)的縮碼,來(lái)書寫和記憶二進(jìn)制數(shù),便于人機(jī)信息交換。在MCS-51系列單片機(jī)編程中,通常采用十六進(jìn)制數(shù)。,3.二進(jìn)制數(shù)與八進(jìn)制數(shù)之間的相互轉(zhuǎn)換 由于238,故可采用“合3為1”的原則,即從小數(shù)點(diǎn)開(kāi)始分別向左、右兩邊各以3位為1組進(jìn)行二八換算;若不足3位的以0補(bǔ)足,便可將二進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)。 例5: 將1111011.0101B轉(zhuǎn)換為八進(jìn)制數(shù)。 解: 根據(jù)“合3為1”和不足3位以0補(bǔ)足的原則,將此二進(jìn)制數(shù)書寫為: 001 111 011 . 010 100 1 7 3 2 4 因此,其結(jié)果為1111011.0101B173.24Q。,例6: 將1357.246Q轉(zhuǎn)換成二進(jìn)制數(shù)。 解: 根據(jù)“1分為3”的原則,可將該十進(jìn)制數(shù)書寫為: 1 3 5 7 . 2 6 001 011 101 111 010 100 110 其結(jié)果為1357.246Q1011101111.01010011B。 4.二進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的相互轉(zhuǎn)換 由于24=16,故可采用“合4為1”的原則,從小數(shù)點(diǎn)開(kāi)始分別向左、右兩邊各以4位為1組進(jìn)行二十六換算;若不足4位以0補(bǔ)足,便可將二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)。,例7: 將1101000101011.001111B轉(zhuǎn)換成十六進(jìn)制數(shù)。 解: 根據(jù)“合4為1”的原則,可將該二進(jìn)制數(shù)書寫為: 0001 1010 0010 1011 0011 1100 1 A 2 B 3 C 其結(jié)果為1101000101011.001111B=1A2B.3CH。 反之,采用“1分為4”的原則,每位十六進(jìn)制數(shù)用4位二進(jìn)制數(shù)表示,便可將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。,例8: 將4D5E.6FH轉(zhuǎn)換成二進(jìn)制數(shù)。 解: 根據(jù)“1分為4”的原則,可將該十六進(jìn)制數(shù)書寫為: 4 D 5 E 6 F 0100 1101 0101 1110 0110 1111 其結(jié)果為4D5E.6FH100110101011110.01101111B。,1.2 二進(jìn)制數(shù)的運(yùn)算,1.2.1二進(jìn)制數(shù)的算術(shù)運(yùn)算 二進(jìn)制數(shù)不僅物理上容易實(shí)現(xiàn),而且算術(shù)運(yùn)算也比較簡(jiǎn)單,其加、減法遵循“逢2進(jìn)1”、“借1當(dāng)2”的原則。 以下通過(guò)4個(gè)例子說(shuō)明二進(jìn)制數(shù)的加、減、乘、除運(yùn)算過(guò)程。 1. 二進(jìn)制加法 1 位二進(jìn)制數(shù)的加法規(guī)則為: 000 011 101 1110 (有進(jìn)位),例1: 求11001010B11101B。 解: 被加數(shù) 11001010 加數(shù) 11101 進(jìn)位 ) 00110000 和 11100111 則11001010B11101B11100111B。 由此可見(jiàn),兩個(gè)二進(jìn)制數(shù)相加時(shí),每1位有3個(gè)數(shù)參與運(yùn)算(本位被加數(shù)、加數(shù)、低位進(jìn)位),從而得到本位和以及向高位的進(jìn)位。,2. 二進(jìn)制減法 1位二進(jìn)制數(shù)減法規(guī)則為: 101 110 000 011 (有借位) 例2: 求10101010B10101B。 解: 被減數(shù) 10101010 減數(shù) 10101 借位 ) 00101010 差 10010101 則10101010B10101B10010101B。,3.二進(jìn)制乘法 1 位二進(jìn)制乘法規(guī)則為: 000 010 100 111 例3: 求110011B1011B。 解: 被乘數(shù) 110011 乘數(shù) ) 1011 110011 110011 000000 ) 110011 積 1000110001,則110011B1011B1000110001B。 由運(yùn)算過(guò)程可以看出,二進(jìn)制數(shù)乘法與十進(jìn)制數(shù)乘法相類似,可用乘數(shù)的每1位去乘被乘數(shù),乘得的中間結(jié)果的最低有效位與相應(yīng)的乘數(shù)位對(duì)齊,若乘數(shù)位為1,則中間結(jié)果為被乘數(shù);若乘數(shù)位為0,則中間結(jié)果為0,最后把所有中間結(jié)果同時(shí)相加即可得到乘積。顯然,這種算法計(jì)算機(jī)實(shí)現(xiàn)時(shí)很不方便。對(duì)于沒(méi)有乘法指令的微型計(jì)算機(jī)來(lái)說(shuō),常采用比較、相加、與部分積右移相結(jié)合的方法進(jìn)行編程來(lái)實(shí)現(xiàn)乘法運(yùn)算。,4.二進(jìn)制除法 二進(jìn)制除法的運(yùn)算過(guò)程類似于十進(jìn)制除法的運(yùn)算過(guò)程。 例4: 求 100100B101B。 解: 000111 101 100100 101 1000 101 110 101 1,則100100B101B=111B,余1B。 二進(jìn)制數(shù)除法是二進(jìn)制數(shù)乘法的逆運(yùn)算,在沒(méi)有除法指令的微型計(jì)算機(jī)中,常采用比較、相減、余數(shù)左移相結(jié)合的方法進(jìn)行編程來(lái)實(shí)現(xiàn)除法運(yùn)算。由于MCS-51系列單片機(jī)指令系統(tǒng)中包含有加、減、乘、除指令,因此給用戶編程帶來(lái)了許多方便,同時(shí)也提高了機(jī)器的運(yùn)算效率。,1.2.2 二進(jìn)制數(shù)的邏輯運(yùn)算 1.“與”運(yùn)算(AND) “與”運(yùn)算又稱邏輯乘,運(yùn)算符為或?!芭c”運(yùn)算的規(guī)則如下: 000 01100 111 例5: 若二進(jìn)制數(shù)X10101111B,Y01011110B,求 XY。 10101111 01011110 00001110 則XY00001110B。,2. “或”運(yùn)算(OR) “或”運(yùn)算又稱邏輯加,運(yùn)算符為或。“或”運(yùn)算的規(guī)則如下: 000 01101 111 例6: 若二進(jìn)制數(shù)X10101111B,Y01011110B,求X Y。 10101111 01011110 11111111 則XY11111111B。,3.“非”運(yùn)算(NOT) “非”運(yùn)算又稱邏輯非,如變量A的“非”運(yùn)算記作 ?!胺恰边\(yùn)算的規(guī)則如下: 例7: 若二進(jìn)制數(shù)A10101111B,求 。 01010000B 由此可見(jiàn),邏輯“非”可使A中各位結(jié)果均發(fā)生反變化,即0變1,1變0。,4.“異或”運(yùn)算(XOR) “異或”運(yùn)算的運(yùn)算符為或,其運(yùn)算規(guī)則如下: 0 00 0 11 01 1 10 例8: 若二進(jìn)制數(shù)X10101111B,Y01011110B,求 X Y。 10101111 01011110 11110001 則X Y11110001B。,1.3 帶符號(hào)數(shù)的表示方法 原碼、反碼、補(bǔ)碼,1.3.1 機(jī)器數(shù)與真值 在1.2.1、1.2.2節(jié)中討論的二進(jìn)制數(shù)運(yùn)算均為無(wú)符號(hào)數(shù)運(yùn)算,但實(shí)際的數(shù)值是帶有符號(hào)的,既可能是正數(shù),也可能是負(fù)數(shù),前者符號(hào)用“”號(hào)表示,后者符號(hào)用“”號(hào)表示,運(yùn)算的結(jié)果也可能是正數(shù),也可能是負(fù)數(shù)。于是在計(jì)算機(jī)中就存在著如何表示正、負(fù)數(shù)的問(wèn)題。,由于計(jì)算機(jī)只能識(shí)別0和1,因此,在計(jì)算機(jī)中通常把一個(gè)二進(jìn)制數(shù)的最高位作為符號(hào)位,以表示數(shù)值的正與負(fù)(若用8位表示一個(gè)數(shù),則D7位為符號(hào)位;若用16位表示一個(gè)數(shù),則D15位為符號(hào)位),并用0表示“”;用1表示“”。 例如:N11011, N2-1011在計(jì)算機(jī)中用8位二進(jìn)制數(shù)可分別表示為: D7 D6 D5 D4 D3 D2 D1 D0,符號(hào),數(shù)值部分,1.3.2原碼、補(bǔ)碼與反碼 1.原碼 正數(shù)的符號(hào)位用0表示,負(fù)數(shù)的符號(hào)位用1表示,數(shù)值部分用真值的絕對(duì)值來(lái)表示的二進(jìn)制機(jī)器數(shù)稱之為原碼,用X原表示。 (1)正數(shù)的原碼。,D7 D6 D5 D4 D3 D2 D1 D0,符號(hào),數(shù)值部分,若真值為正數(shù)XK n-2 K n-3K1K0(即n-1位二進(jìn)制正數(shù)), 則X原0K n-2 K n-3K1K0 (14) 2) 負(fù)數(shù)的原碼。 若真值為負(fù)數(shù)XK n-2 K n-3K1K0(即n-1位二進(jìn)制負(fù)數(shù)), 則X原 0K n-2 K n-3K1K0 2 n-1 K n-2 K n-3K1K0 2 n-1 (K n-2 K n-3K1K0) 2 n-1 X (15),例如:115和-115在計(jì)算機(jī)中(設(shè)機(jī)器字長(zhǎng)為8位),其原碼可分別表示為: +115原01110011B;-115原11110011B (3)零的原碼。 若真值為零,則原碼有兩種表示法: +0原00000 -0原10000 由此可得原碼與真值的關(guān)系為 X, 0X2n 2 n-1X 2nX0 (16),X原,2. 補(bǔ)碼與反碼 1)補(bǔ)碼的概念 在日常生活中有許多“補(bǔ)”數(shù)的事例。如鐘表,假設(shè)標(biāo)準(zhǔn)時(shí)間為6點(diǎn)整,而某鐘表卻指在9點(diǎn),若要把表?yè)軠?zhǔn),可以有兩種撥法,一種是倒撥3小時(shí),即936;另一種是順撥9小時(shí),即996。盡管將表針倒撥或順撥不同的時(shí)數(shù),但卻得到相同的結(jié)果,即93與99是等價(jià)的。這是因?yàn)殓姳聿捎?2小時(shí)進(jìn)位,超過(guò)12就從頭算起,即:99126,該12稱之為模(mod)。,模(mod)為一個(gè)系統(tǒng)的量程或此系統(tǒng)所能表示的最大數(shù),它會(huì)自然丟掉,如: 93991266 (mod12 自然丟掉) 通常稱9是3在模為12時(shí)的補(bǔ)數(shù)。于是,引入補(bǔ)數(shù)后使減法運(yùn)算變?yōu)榧臃ㄟ\(yùn)算。 例如: 1171154 (mod12) 5是7在模為12時(shí)的補(bǔ)數(shù),減7與加5的效果是一樣的。,一般情況下,任一整數(shù)X,在模為K時(shí)的補(bǔ)數(shù)可用下式表示: X補(bǔ)數(shù)XK(modK) X 0XK K-|X| KX0 (17),=,由補(bǔ)碼的概念引伸,當(dāng)用n位二進(jìn)制數(shù)表示整數(shù)X(1位為符號(hào)位,n-1位為數(shù)值位),模為2n時(shí),數(shù)的補(bǔ)碼可表示為: X 0X2 n-1 2nX 2 n-1X0,(mod2n),X補(bǔ),(18),從式(18)可見(jiàn): 正數(shù)的補(bǔ)碼與其原碼相同,即X補(bǔ)X原; 零的補(bǔ)碼為零,+0補(bǔ)-0補(bǔ)00000; 負(fù)數(shù)才有求補(bǔ)碼的問(wèn)題。 2)負(fù)數(shù)補(bǔ)碼的求法 補(bǔ)碼的求法一般有兩種: 用補(bǔ)碼定義式: X補(bǔ)2nX2n|X| -2 n-1X0(整數(shù)) (19),在用補(bǔ)碼定義式求補(bǔ)碼的過(guò)程中,由于做一次減法很不方便,故該法一般不用。 例如:X-0101111B, n8,則 X補(bǔ)=28(-0101111B) 100000000B0101111B 11010001B(mod28) 用原碼求反碼,再在數(shù)值末位加1可得到補(bǔ)碼,即:X補(bǔ)X反1。,3) 反碼 一個(gè)正數(shù)的反碼,等于該數(shù)的原碼;一個(gè)負(fù)數(shù)的反碼,等于該負(fù)數(shù)的原碼符號(hào)位不變(即為1),數(shù)值位按位求反(即0變1,1變0);或者在該負(fù)數(shù)對(duì)應(yīng)的正數(shù)原碼上連同符號(hào)位逐位求反。反碼用X反表示。 X 0X2 n-1 (2n-1)+X -2 n-1X0 (110),X反,從式(110)可見(jiàn): 正數(shù)的反碼:X反X原; 負(fù)數(shù)的反碼:X反 零的反碼:+0反00000 -0反11111 例1: 假設(shè)X1+83, X2-76,當(dāng)用8位二進(jìn)制數(shù)表示一個(gè)數(shù)時(shí),求X1、X2的原碼、反碼及補(bǔ)碼。 解: X1原X1反X1補(bǔ)01010011B X2原11001100B,X2反10110011B X2補(bǔ)X反110110100B 綜上所述可歸納為: 正數(shù)的原碼、反碼、補(bǔ)碼就是該數(shù)本身; 負(fù)數(shù)的原碼其符號(hào)位為1,數(shù)值位不變; 負(fù)數(shù)的反碼其符號(hào)位為1,數(shù)值位逐位求反; 負(fù)數(shù)的補(bǔ)碼其符號(hào)位為1,數(shù)值位逐位求反并在末位加1。,1.3.3 補(bǔ)碼的運(yùn)算規(guī)則與溢出判別 1. 補(bǔ)碼的運(yùn)算規(guī)則 補(bǔ)碼的運(yùn)算規(guī)則如下: 1)X+Y補(bǔ)X補(bǔ)Y補(bǔ) 該運(yùn)算規(guī)則說(shuō)明:任何兩個(gè)數(shù)相加,無(wú)論其正負(fù)號(hào)如何,只要對(duì)它們各自的補(bǔ)碼進(jìn)行加法運(yùn)算,就可得到正確的結(jié)果,該結(jié)果是補(bǔ)碼形式。,2)X-Y補(bǔ)X補(bǔ)-Y補(bǔ) 該運(yùn)算規(guī)則說(shuō)明:任意兩個(gè)數(shù)相減,只要對(duì)減數(shù)連同“-”號(hào)求補(bǔ),就變成被減數(shù)補(bǔ)與-減數(shù)補(bǔ)相加,該結(jié)果是補(bǔ)碼形式。 3)X補(bǔ)補(bǔ)X原 對(duì)于運(yùn)算產(chǎn)生的補(bǔ)碼結(jié)果,若要轉(zhuǎn)換為原碼表示,則正數(shù)的結(jié)果X補(bǔ)X原;負(fù)數(shù)結(jié)果,只要對(duì)該補(bǔ)結(jié)果再進(jìn)行一次求補(bǔ)運(yùn)算,就可得到負(fù)數(shù)的原碼結(jié)果。,例2: 用補(bǔ)碼求X+Y。 解: 若X補(bǔ)00100101, Y補(bǔ)00110011,可得 X+Y補(bǔ)X補(bǔ)+Y補(bǔ) 00100101+0011001101011000 由于符號(hào)位為0是正數(shù),所以 X+Y原X+Y補(bǔ)01011000 則 X+Y(01011000)288,例3: 用補(bǔ)碼求X-Y。 解: 若-Y補(bǔ)11001101,可得 X-Y補(bǔ)X補(bǔ)+-Y補(bǔ) 00100101+1100110111110010 由于符號(hào)位為1是負(fù)數(shù),所以 X-Y原X-Y補(bǔ)補(bǔ)10001110 則 X-Y-(00001110)2-14,例4: 用補(bǔ)碼求Y-X。 解: 若-X補(bǔ)11011011,可得 Y-X補(bǔ)Y補(bǔ)+-X補(bǔ) 00110011+11011011100001110 (模28自然丟失) 則 Y-X(00001110)2+14,例5: 用補(bǔ)碼求(-X)+(-Y)。 解: (-X)+(-Y)補(bǔ)-X補(bǔ)+-Y補(bǔ) 11011011+11001101110101000 (模28自然丟失) (-X)+(-Y)原(-X)+(-Y)補(bǔ)補(bǔ)11011000 則(-X)+(-Y)-(01011000)2-88 上述運(yùn)算結(jié)果是正確的,但有時(shí)在補(bǔ)碼運(yùn)算中可能會(huì)出現(xiàn)錯(cuò)誤的結(jié)果,請(qǐng)看下面例子。,例6: 設(shè)X+100,Y+50,用補(bǔ)碼運(yùn)算求X+Y,(-X)+(-Y)。 解: X補(bǔ)01100100Y補(bǔ)00110010 -X補(bǔ)10011100-Y補(bǔ)11001110 X+Y補(bǔ)X補(bǔ)+Y補(bǔ)01100100+0011001010010110 X+Y原X+Y補(bǔ)補(bǔ)11101010 X+Y-(01101010)2-106 而-X補(bǔ)+-Y補(bǔ)10011100+1100111001101010 -X補(bǔ)+-Y補(bǔ)原(01101010)201101010 (-X)+(-Y)+(01101010)+106,2. 溢出的判別 計(jì)算機(jī)中判別溢出的方法通常采用雙高位判別法。雙高位判別法利用符號(hào)位(K n-1位) 及最高數(shù)值位(K n-2位)的進(jìn)位情況來(lái)判斷是否發(fā)生了溢出。為此,需引進(jìn)兩個(gè)符號(hào):CS和CP。 CS :若符號(hào)位發(fā)生進(jìn)位,則CS 1;否則CS 0。 CP :若最高數(shù)值位發(fā)生進(jìn)位,則CP 1;否則CP 0。,當(dāng)兩個(gè)正數(shù)補(bǔ)碼相加時(shí),若數(shù)值部分之和大于2n-1,則數(shù)值部分必有進(jìn)位CP1;而符號(hào)位卻無(wú)進(jìn)位CS0。這時(shí)CSCP的狀態(tài)為“01”,發(fā)生正溢出。 當(dāng)兩個(gè)負(fù)數(shù)補(bǔ)碼相加時(shí),若數(shù)值部分絕對(duì)值之和大于2n-1,則數(shù)值部分補(bǔ)碼之和必小于2n-1,CP0;而符號(hào)位肯定有進(jìn)位CS1,這時(shí)CSCP的狀態(tài)為“10”,發(fā)生負(fù)溢出。 當(dāng)不發(fā)生溢出時(shí),CS和CP的狀態(tài)是相同的,即CSCP的狀態(tài)為“00”或“11”。,例 7: 01011001 (+89) 10010010 (-110) 01101100 (+108) 10100100 (-92) +)011110000 (進(jìn)位) +)1 00000000 (進(jìn)位) 011000101 (-59) 1 00110110 (+54) CS0,CP1,正溢出 CS1,CP0,負(fù)溢出,例8: 00110010 (+50) 11101100 (-20) 01000110 (+70) 11100010 (-30) +)0 00001100 (進(jìn)位) +)1 11000000 (進(jìn)位) 0 01111000(+120) 1 11001110(-50) CS0,CP0,無(wú)溢出 CS1,CP1,無(wú)溢出,例9: 01010101 (+85) 10111100 (-68) 11011101 (-35) 00011101 (+29) +)1 10111010 (進(jìn)位) +)0 01111000 (進(jìn)位) 1 00110010(+50) 0 11011001(-39) CS1,CP1,無(wú)溢出 CS0,CP0,無(wú)溢出,綜上所述,對(duì)計(jì)算機(jī)而言,補(bǔ)碼的引入使帶符號(hào)數(shù)的運(yùn)算都按加法處理。如果C和C的值相等,則表示運(yùn)算結(jié)果正確,沒(méi)有溢出,運(yùn)算結(jié)果的正與負(fù)由符號(hào)位決定(如例8、例9);如果CS和CP的值不等,則表示運(yùn)算結(jié)果不正確,發(fā)生了溢出現(xiàn)象(如例7)。 在計(jì)算機(jī)中,常用“異或”電路來(lái)判別有無(wú)溢出發(fā)生,即CSCP1表示有溢出發(fā)生,否則無(wú)溢出發(fā)生。,1.4 定點(diǎn)數(shù)與浮點(diǎn)數(shù),1.4.1 定點(diǎn)表示法 在計(jì)算機(jī)中,如將小數(shù)點(diǎn)的位置固定不變,稱為定點(diǎn)表示法。這個(gè)固定的位置是事先約定好的,不必用符號(hào)表示。用定點(diǎn)法表示的實(shí)數(shù)叫做定點(diǎn)數(shù)。通常,定點(diǎn)表示采用以下兩種方法。,1. 定點(diǎn)整數(shù)表示法 小數(shù)點(diǎn)固定在最低數(shù)值位之后,機(jī)器中能表示的所有數(shù)都是整數(shù),這種方法稱之為定點(diǎn)整數(shù)表示法。其格式如下:,其中“.”為設(shè)定的小數(shù)點(diǎn)位置 當(dāng)用n位表示數(shù)N時(shí),1位為符號(hào)位,n1位為數(shù)值位, 則N的范圍是: 2 n-1N2 n-11 (111),若n8,則-128N127;若n16,則32768N32767。 例如: 若N1011011,n8,則在計(jì)算機(jī)內(nèi)用定點(diǎn)整數(shù)法可將N表示為:,2. 定點(diǎn)小數(shù)表示法 小數(shù)點(diǎn)固定在最高數(shù)值位之前,機(jī)器中能表示的所有數(shù)即為純小數(shù),這種方法稱之為定點(diǎn)小數(shù)表示法。其格式如下:,其中“.”為設(shè)定的小數(shù)點(diǎn)位置。 當(dāng)用n位表示數(shù)N時(shí),1位為符號(hào)位,n1位為數(shù)值位, 則N的范圍是: (12 1-n)N12 1-n (112),例如:若N-0.1011011,n8,則在計(jì)算機(jī)內(nèi)用定點(diǎn)小數(shù)法可將N表示為:,1.4.2 浮點(diǎn)表示法 在計(jì)算機(jī)中,小數(shù)點(diǎn)位置并不是固定不變的,而是可以改變的,這種表示法稱為浮點(diǎn)表示法。用浮點(diǎn)法表示的實(shí)數(shù),叫做浮點(diǎn)數(shù)。 任意一個(gè)二進(jìn)制數(shù)N可以表示成如下形式: NM2E (113) 稱作數(shù)符,表示數(shù)的正、負(fù);E稱為階碼,它前面的符號(hào)稱為階符,指明尾數(shù)小數(shù)點(diǎn)向右或向左浮動(dòng)的方向,而階碼E指明尾數(shù)小數(shù)點(diǎn)移動(dòng)的位數(shù),所以階符和階碼表明了數(shù)值N小數(shù)點(diǎn)的位置。,設(shè)階碼E的位數(shù)為m位,尾數(shù)M的位數(shù)為n位,則浮點(diǎn)數(shù)N的取值范圍為: 2 -n2 -(2m-1)|N|(12-n)2(2m-1) (114) 例如:對(duì)16位表示的浮點(diǎn)原碼數(shù),當(dāng)m7,n7時(shí),它所能表示的最大絕對(duì)值為: |N|max(12-n)2(2m-1) (12-7)2(27-1)2127 它所能表示的除0以外的最小絕對(duì)值為: |N|min2-n2-(2m-1)2-72-(27-1) 2-134 (115),由此可見(jiàn),由于浮點(diǎn)數(shù)能表示的數(shù)值范圍很大,因此,在科學(xué)計(jì)算時(shí)不需要比例因子。為了提高精度,發(fā)揮尾數(shù)有效位的最大作用,還規(guī)定二進(jìn)制浮點(diǎn)數(shù)其尾數(shù)數(shù)字部分原碼的最高位為1,叫做規(guī)格化表示法。如:0.0010101可表示為2-20.1010100稱為規(guī)格化浮點(diǎn)數(shù)。,1.5 BCD碼和ASCII碼,1.5.1 BCD碼(BinaryCodedDecimal) 二進(jìn)制數(shù)以其物理易實(shí)現(xiàn)和運(yùn)算簡(jiǎn)單的優(yōu)點(diǎn)在計(jì)算機(jī)中得到了廣泛應(yīng)用,但人們?nèi)粘A?xí)慣最熟悉的還是十進(jìn)制。為了既滿足人們的習(xí)慣,又能讓計(jì)算機(jī)接受,便引入了BCD碼。它用二進(jìn)制數(shù)碼按照不同規(guī)律編碼來(lái)表示十進(jìn)制數(shù),這樣的十進(jìn)制數(shù)的二進(jìn)制編碼,既具有二進(jìn)制的形式,又具有十進(jìn)制的特點(diǎn),便于傳遞處理。,1位十進(jìn)制數(shù)有09共10個(gè)不同數(shù)碼,需要由4位二進(jìn)制數(shù)來(lái)表示。4位二進(jìn)制數(shù)有16種組合,取其10種組合分別代表10個(gè)十進(jìn)制數(shù)碼。最常用的方法是8421BCD碼,其中8、4、2、1分別為4位二進(jìn)制數(shù)的位權(quán)值。表12給出了十進(jìn)制數(shù)和8421BCD碼的對(duì)應(yīng)關(guān)系。,表 12842
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 證券投資分析策略與實(shí)踐應(yīng)用試題
- 夏日冰棒美術(shù)課件
- 社交媒體營(yíng)銷策略案例分析與探討題
- 汽車行業(yè)技術(shù)研發(fā)經(jīng)驗(yàn)證明書(6篇)
- 生產(chǎn)安全檢查知識(shí)手冊(cè)
- 農(nóng)村集體經(jīng)濟(jì)合作社章程及合作協(xié)議書
- 行政管理中的前沿公共關(guān)系學(xué)試題及答案
- 2025年行業(yè)前景試題及答案
- 行政管理經(jīng)濟(jì)法概論重難點(diǎn)探討試題及答案
- 水利水電工程關(guān)鍵考點(diǎn)及復(fù)習(xí)策略試題及答案
- 浙江水利專業(yè)高級(jí)工程師任職資格考試題及答案
- 2024年南京市雨花臺(tái)區(qū)數(shù)學(xué)三年級(jí)第一學(xué)期期末學(xué)業(yè)水平測(cè)試模擬試題含解析
- 醫(yī)院培訓(xùn)課件:《靜脈中等長(zhǎng)度導(dǎo)管臨床應(yīng)用專家共識(shí)》
- 汽車維修工(汽車維修檢驗(yàn)工)技能考核內(nèi)容結(jié)構(gòu)表與技能考核要素細(xì)目表
- 柘榮縣生態(tài)公益林護(hù)林員考核評(píng)分表
- 攤位簡(jiǎn)單轉(zhuǎn)讓合同范本2024年
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)(廣西師范大學(xué))智慧樹(shù)知到期末考試答案章節(jié)答案2024年廣西師范大學(xué)
- 鄂爾多斯2024年內(nèi)蒙古鄂爾多斯市康巴什區(qū)事業(yè)單位招聘31人筆試歷年典型考題及考點(diǎn)附答案解析
- 珠寶零售店合伙人退伙協(xié)議
- 2024年美國(guó)戶外露營(yíng)裝備市場(chǎng)現(xiàn)狀及上下游分析報(bào)告
- 《大學(xué)生創(chuàng)業(yè)》課件完整版
評(píng)論
0/150
提交評(píng)論