計(jì)算機(jī)組成原理 第2章 計(jì)算機(jī)中數(shù)據(jù)信息的表示_第1頁(yè)
計(jì)算機(jī)組成原理 第2章 計(jì)算機(jī)中數(shù)據(jù)信息的表示_第2頁(yè)
計(jì)算機(jī)組成原理 第2章 計(jì)算機(jī)中數(shù)據(jù)信息的表示_第3頁(yè)
計(jì)算機(jī)組成原理 第2章 計(jì)算機(jī)中數(shù)據(jù)信息的表示_第4頁(yè)
計(jì)算機(jī)組成原理 第2章 計(jì)算機(jī)中數(shù)據(jù)信息的表示_第5頁(yè)
已閱讀5頁(yè),還剩230頁(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)介

2024/2/3

?第8版2012.091第2章計(jì)算機(jī)中數(shù)據(jù)信息的表示

2024/2/32本章學(xué)習(xí)內(nèi)容計(jì)算機(jī)中數(shù)制與數(shù)制轉(zhuǎn)換方法計(jì)算機(jī)中數(shù)值數(shù)據(jù)的表示機(jī)器數(shù)的概念原碼、補(bǔ)碼、反碼、移碼表示及運(yùn)算方法數(shù)的定點(diǎn)與浮點(diǎn)表示及運(yùn)算方法非數(shù)值數(shù)據(jù)的表示十進(jìn)制數(shù)串的表示數(shù)據(jù)校驗(yàn)碼2024/2/33計(jì)算機(jī)內(nèi)部信息信息控制信息數(shù)據(jù)信息指令控制字?jǐn)?shù)值型數(shù)據(jù)非數(shù)值型數(shù)據(jù)定點(diǎn)數(shù)浮點(diǎn)數(shù)數(shù)字串字符與字符串漢字與漢字串2024/2/342.1數(shù)制與數(shù)制轉(zhuǎn)換任何R進(jìn)制數(shù)N均可表示為(N)R=K-mR-m+K-(m-1)R-(m-1)+…+K0R0+K1R1+…+KnRn

=R:基值。表示系數(shù)Ki可以取0,1,…,R-1共R個(gè)數(shù)字并且是逢R進(jìn)一的。Ri:位權(quán)值。KiRi表示Ki在數(shù)列中所代表的實(shí)際數(shù)值。任何進(jìn)位計(jì)數(shù)制都具有兩個(gè)基本因素:基值和位權(quán)值。2024/2/35二進(jìn)制數(shù)字:0,1進(jìn)位方式:逢二進(jìn)一后綴:B如10100011B八進(jìn)制數(shù)字:0,1,2,3,4,5,6,7進(jìn)位方式:逢八進(jìn)一后綴:O或Q如137.67Q計(jì)算機(jī)中常用進(jìn)位計(jì)數(shù)制2024/2/36十進(jìn)制數(shù)字:0,1,2,3,4,5,6,7,8,9進(jìn)位方式:逢十進(jìn)一后綴:D或無(wú)如1357.26十六進(jìn)制數(shù)字:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)進(jìn)位方式:逢十六進(jìn)一后綴:H如19BF.36EH2024/2/371.任意進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)方法:按權(quán)相加。即利用按位展開(kāi)公式將系數(shù)與位權(quán)值相乘后求和。例2.1將二進(jìn)制數(shù)10110011.10111轉(zhuǎn)換為十進(jìn)制數(shù)。(10110011.10111)2

=27+25+24+21+20+2-1+2-3+2-4+2-5

=128+32+16+2+1+0.5+0.125+0.0625

+0.03125

=(179.71875)102024/2/38例2.2將八進(jìn)制數(shù)263.56轉(zhuǎn)換為十進(jìn)制數(shù)。(263.56)8

=2×82+6×81+3×80+5×8-1+6×8-2

=128+48+3+0.625+0.09375

=(179.71875)10例2.3將十六進(jìn)制數(shù)B3.B8轉(zhuǎn)換為十進(jìn)制數(shù)。(B3.B8)16

=B×161+3×160+B×16-1+8×16-2

=11×161+3×160+11×16-1+8×16-2

=176+3+0.6875+0.03125

=(179.71875)102024/2/392.十進(jìn)制數(shù)轉(zhuǎn)換為任意進(jìn)制數(shù)數(shù)制轉(zhuǎn)換原則:兩個(gè)有理數(shù)相等?這兩個(gè)有理數(shù)的整數(shù)部分、小數(shù)部分分別相等。進(jìn)行不同數(shù)制之間的轉(zhuǎn)換時(shí)要求:整數(shù)部分、小數(shù)部分分別進(jìn)行轉(zhuǎn)換2024/2/310數(shù)制轉(zhuǎn)換方法整數(shù)部分:除基取余①把被轉(zhuǎn)換的十進(jìn)制整數(shù)除以基數(shù)R,取其余數(shù)即為R進(jìn)制整數(shù)的最低位的數(shù)字。②再用基數(shù)R去除前次所得的商,所得余數(shù)即為R進(jìn)制整數(shù)相應(yīng)位的數(shù)字。③重復(fù)②,直到商為0為止。2024/2/311數(shù)制轉(zhuǎn)換方法小數(shù)部分:乘基取整①把被轉(zhuǎn)換的十進(jìn)制小數(shù)乘以基數(shù)R,取乘積的整數(shù)部分作為R進(jìn)制小數(shù)的最高位的數(shù)字。②再用基數(shù)R乘前一步乘積的小數(shù)部分,取新的乘積的整數(shù)部分為R進(jìn)制小數(shù)相應(yīng)位的數(shù)字。③重復(fù)②,直到乘積的小數(shù)部分為?;蚯蟮盟蟮奈粩?shù)為止。2024/2/312例2.4將(233.8125)10轉(zhuǎn)換為二進(jìn)制數(shù)。整數(shù)部分22331…余數(shù)

21160

2580

2291

2140

271

231

211

0(233)10=(11101001)22024/2/313小數(shù)部分

0.8125

×2

1.6250

×2

1.2500

×2

0.5000

×2

1.0000

(0.8125)10=(0.1101)2(233.8125)10=(11101001.1101)22024/2/314例2.5將(233.8125)10轉(zhuǎn)換為十六進(jìn)制數(shù)。整數(shù)部分

162339

161414

0

小數(shù)部分

0.8125

×16

4.8750

×16

13.0000(233.8125)10=(E9.4D)162024/2/3153.二、八、十六進(jìn)制數(shù)之間的轉(zhuǎn)換因?yàn)?6=24,8=23二進(jìn)制數(shù)與八進(jìn)制數(shù)之間的轉(zhuǎn)換方法:整數(shù)部分從最低有效位開(kāi)始,每三位二進(jìn)制數(shù)對(duì)應(yīng)一位八進(jìn)制數(shù),不足三位高位補(bǔ)“0”。小數(shù)部分從最高有效位開(kāi)始,每三位二進(jìn)制數(shù)對(duì)應(yīng)一位八進(jìn)制數(shù),不足三位,低位補(bǔ)“0”。二進(jìn)制與十六進(jìn)制數(shù)間的轉(zhuǎn)換方法:整數(shù)部分從最低有效位開(kāi)始,每四位二進(jìn)制數(shù)對(duì)應(yīng)一位十六進(jìn)制數(shù),不足四位高位補(bǔ)“0”。小數(shù)部分從最高有效位開(kāi)始,每四位二進(jìn)制數(shù)對(duì)應(yīng)一位十六進(jìn)制數(shù),不足四位,低位補(bǔ)“0”。2024/2/316例2.6將(1011100.10111)2轉(zhuǎn)換為八進(jìn)制和十六進(jìn)制數(shù)。

001011100.101110134.56(1011100.10111)2=(134.56)801011100.101110005C.B8(1011100.10111)2=(5C.B8)162024/2/317計(jì)算機(jī)中的數(shù)據(jù)表示數(shù)據(jù)表示能夠由計(jì)算機(jī)硬件直接識(shí)別的數(shù)據(jù)類型,如定點(diǎn)數(shù)、浮點(diǎn)數(shù)等。硬件直接識(shí)別即某種數(shù)據(jù)類型可用計(jì)算機(jī)硬件直接表示出來(lái),并能用計(jì)算機(jī)指令直接調(diào)用。2024/2/318數(shù)據(jù)表示(取值范圍、精度、類型)影響計(jì)算機(jī)性能的全局性問(wèn)題直接影響算法的選擇、硬件結(jié)構(gòu)與組成隨硬件技術(shù)和應(yīng)用需求而變化和發(fā)展是復(fù)雜的系統(tǒng)設(shè)計(jì)問(wèn)題2024/2/3192.2.1機(jī)器數(shù)與真值由于計(jì)算機(jī)中的硬件電路只能直接表示和處理二進(jìn)制數(shù),所以需要研究帶符號(hào)數(shù)的符號(hào)和小數(shù)點(diǎn)在計(jì)算機(jī)中如何表示。1.機(jī)器數(shù)采用二進(jìn)制表示形式的連同數(shù)符一起代碼化了的數(shù)據(jù),在計(jì)算機(jī)中統(tǒng)稱為機(jī)器數(shù)或機(jī)器碼。機(jī)器數(shù)是數(shù)在計(jì)算機(jī)中的二進(jìn)制表示形式。2.

真值與機(jī)器數(shù)對(duì)應(yīng)的用正、負(fù)符號(hào)加絕對(duì)值表示的實(shí)際數(shù)值稱為真值。2.2帶符號(hào)數(shù)的表示2024/2/320⑴數(shù)的符號(hào)二進(jìn)制代碼化。

“0”代表+,“1”代表-,且放在數(shù)據(jù)的最高位。⑵小數(shù)點(diǎn)本身是隱含的,不占用存儲(chǔ)空間。⑶每個(gè)機(jī)器數(shù)數(shù)據(jù)所占的二進(jìn)制位數(shù)受機(jī)器硬件規(guī)模的限制,與機(jī)器字長(zhǎng)有關(guān)。超過(guò)機(jī)器字長(zhǎng)的數(shù)值要舍去。3.機(jī)器數(shù)的特點(diǎn)2024/2/321機(jī)器數(shù)可分為無(wú)符號(hào)數(shù):機(jī)器字長(zhǎng)的所有二進(jìn)制位均表示數(shù)值帶符號(hào)數(shù):數(shù)值部分和符號(hào)均用二進(jìn)制代碼表示

例:8位機(jī)器數(shù)為:11011011

若為無(wú)符號(hào)整數(shù),則11011011表示二進(jìn)制整數(shù)。

其真值為11011011=(219)10

若為帶符號(hào)整數(shù),則最高位為符號(hào),

11011011表示二進(jìn)制整數(shù)-1011011

其真值為-1011011=(-91)102024/2/322機(jī)器數(shù)表示的數(shù)值是不連續(xù)的例如:8位二進(jìn)制無(wú)符號(hào)數(shù)可以表示256個(gè)數(shù)

00000000~11111111=0~28-18位二進(jìn)制帶符號(hào)數(shù)可以表示-127~127,共256個(gè)數(shù)。

11111111~10000000,00000000~01111111即-1111111~-0和+0~+1111111。其中:10000000表示-0,00000000表示+02024/2/323Pentium的整數(shù)數(shù)據(jù)表示無(wú)符號(hào)二進(jìn)制數(shù)的數(shù)據(jù)表示7015031063000H~0FFH0000H~0FFFFH00000000H~0FFFFFFFFH0000000000000000H~0FFFFFFFFFFFFFFFFH字節(jié)字雙字四字2024/2/324Pentium的整數(shù)數(shù)據(jù)表示帶符號(hào)二進(jìn)制數(shù)的數(shù)據(jù)表示7015080H~7FH8000H~7FFFHSS31063080000000H~7FFFFFFFH8000000000000000H~7FFFFFFFFFFFFFFFHSS字節(jié)字雙字四字2024/2/325如何知道計(jì)算機(jī)表示的數(shù)據(jù)是否帶符號(hào)計(jì)算機(jī)在執(zhí)行指令時(shí),指令所處理的數(shù)據(jù)類型由指令操作碼決定。2024/2/3262.2.2原碼表示原碼表示:保持原有的數(shù)值部分的形式不變,只將符號(hào)用二進(jìn)制代碼表示。原碼表示是最簡(jiǎn)單的機(jī)器數(shù)表示方法。1.原碼的定義純小數(shù)原碼定義:例:[0.10011001]原=0.10011001[-0.10011001]原=1.100110012024/2/327純整數(shù)原碼定義:式中n為除符號(hào)位以外的數(shù)值部分的位數(shù)

例2.7[10011001]原=010011001[-10011001]原=1100110012024/2/328例2.8設(shè)機(jī)器字長(zhǎng)為8位,寫(xiě)出+0.375和

-0.6875的二進(jìn)制原碼表示。解:

(+0.375)10

=(0.011)2=(0.0110000)2[0.0110000]原=0.0110000(-0.6875)10=(-0.1011)2

=(-0.1011000)2[-0.1011000]原=1.10110002024/2/329例2.9設(shè)機(jī)器字長(zhǎng)為8位,寫(xiě)出+37和-37的二進(jìn)制原碼,并用十六進(jìn)制表示。解:

(+37)10=(100101)2=(00100101)2[00100101]原=00100101=25H(-37)10=(-100101)2=(-00100101)2[-00100101]原=10100101=A5H可見(jiàn)將[x]原的符號(hào)取反即可得到[-x]原2024/2/3302.原碼中0

的表示原碼中“0”有兩種表示純小數(shù)原碼

[+0]原=0.00…0[-0]原=1.00…0純整數(shù)原碼

[+0]原=00…0[-0]原=10…02024/2/331對(duì)于純小數(shù),n+1位原碼的表示范圍:-0.111…11~+0.111…11n位n位即-(1-2-n)~(1-2-n)純小數(shù)n+1位原碼中有一位是符號(hào)對(duì)于純整數(shù),n+1位原碼的表示范圍:-111…11~+111…11n位n位即-(2n-1)~(2n-1)純整數(shù)n+1位原碼中有一位是符號(hào)3.原碼的表數(shù)范圍2024/2/332因?yàn)樵a中“0”有兩種表示方式,

所以n+1位的原碼共可表示2n+1-1個(gè)數(shù)2024/2/3334.原碼的移位規(guī)則符號(hào)位不變,數(shù)值部分左移或右移,移出的空位填“0”。例:[0.0110000]原=0.0110000[0.0110000]原=0.00110002×[0.0110000]原=0.1100000

注意左移時(shí)不要將有效位移出,否則將會(huì)出錯(cuò)。2024/2/3345.原碼的特點(diǎn)⑴

原碼表示直觀、易懂,與真值的轉(zhuǎn)換容易。⑵

原碼表示中0有兩種不同的表示形式,給使用帶來(lái)了不便。通常0的原碼用[+0]原表示,若在計(jì)算過(guò)程中出現(xiàn)了[-0]原,則需要用硬件將[-0]原變?yōu)閇+0]原。⑶

原碼表示的加減運(yùn)算復(fù)雜。2024/2/335利用原碼進(jìn)行兩數(shù)相加運(yùn)算時(shí),首先要判別兩數(shù)符號(hào),若同號(hào)則做加法,若異號(hào)則做減法。在利用原碼進(jìn)行兩數(shù)相減運(yùn)算時(shí),不僅要判別兩數(shù)符號(hào),使得同號(hào)相減,異號(hào)相加;還要判別兩數(shù)絕對(duì)值的大小,用絕對(duì)值大的數(shù)減去絕對(duì)值小的數(shù),取絕對(duì)值大的數(shù)符號(hào)為結(jié)果的符號(hào)。可見(jiàn)原碼表示不便于實(shí)現(xiàn)加減運(yùn)算。2024/2/3362.2.3補(bǔ)碼表示引入補(bǔ)碼的目的是為了解決原碼表示在加減運(yùn)算時(shí)的不便。1.模的概念根據(jù)運(yùn)算時(shí)“?!钡母拍?/p>

5-2=5+8=3(Mod10)對(duì)于某一確定的模,某數(shù)減去一個(gè)數(shù),可以用加上那個(gè)數(shù)的負(fù)數(shù)的補(bǔ)數(shù)來(lái)代替。

2024/2/337[x]補(bǔ)=M+x(ModM)當(dāng)x≥0時(shí),M+x大于M,把M丟掉,所以

[x]補(bǔ)=x,即正數(shù)的補(bǔ)數(shù)等于其本身。當(dāng)x<0時(shí),[x]補(bǔ)=M+x=M-|x|,所以負(fù)數(shù)的補(bǔ)數(shù)等于模與該數(shù)絕對(duì)值之差。2024/2/3382.補(bǔ)碼的定義在計(jì)算機(jī)中,由于數(shù)據(jù)是用二進(jìn)制編碼表示的,所以把補(bǔ)數(shù)稱為補(bǔ)碼。對(duì)于純小數(shù)表示,通常取模M=2對(duì)于純整數(shù)表示,通常取模M=2n+1

(n為除符號(hào)位以外數(shù)值位的位數(shù))2024/2/339純小數(shù)的補(bǔ)碼定義純整數(shù)的補(bǔ)碼定義2024/2/340例2.10x=+0.1011[x]補(bǔ)=0.1011例2.11x=-0.1011[x]補(bǔ)=2+x=10.0000-0.1011=1.0101例2.12x=+1011[x]補(bǔ)=01011例2.13x=-1011,[x]補(bǔ)=25+x=100000-1011=101012024/2/341補(bǔ)碼中“0”的表示是唯一的[+0]補(bǔ)=[-0]補(bǔ)=0.00…0(純小數(shù))[+0]補(bǔ)=[-0]補(bǔ)=00…0(純整數(shù))3.特殊數(shù)的補(bǔ)碼表示補(bǔ)碼表示的最小數(shù)可以表示到-1或-2n對(duì)于純小數(shù)[-1]補(bǔ)=2+(-1)=1.00…0(Mod2)對(duì)于純整數(shù)[-2n]補(bǔ)=2n+1+(-2n)=100…0(Mod2n+1)2024/2/342因?yàn)檠a(bǔ)碼可以表示-1(純小數(shù))和-2n(純整數(shù)),所以補(bǔ)碼的表數(shù)范圍比原碼大。[-1]補(bǔ)=1.00…0[-2n]補(bǔ)=100…0對(duì)于-1和-2n的補(bǔ)碼,符號(hào)位上的1具有特殊意義,既表示符號(hào)也表示數(shù)值。補(bǔ)碼中每一種編碼都有獨(dú)立的意義。對(duì)于n+1位補(bǔ)碼,其表數(shù)范圍為:純小數(shù)-1~1-2-n

共2n+1個(gè)數(shù)純整數(shù)-2-n~2n-1共2n+1個(gè)數(shù)結(jié)論2024/2/3434.補(bǔ)碼的簡(jiǎn)便求法

若x≥0,則[x]補(bǔ)=x,符號(hào)位為0若x<0,則將x的各位取反,然后在最低位上加1,符號(hào)位等于1,即得到[x]補(bǔ)。

例2.14

若x=+0.1011001,則[x]補(bǔ)=0.1011001

若x=-0.1011001

則[x]補(bǔ)=1.0100110+0.0000001=1.0100111

若x=+1101010則[x]補(bǔ)=01101010

若x=-1101010則[x]補(bǔ)=100101102024/2/3445.補(bǔ)碼的幾何性質(zhì)當(dāng)n=3時(shí),純整數(shù)的補(bǔ)碼為:2024/2/3452024/2/346①正數(shù)的補(bǔ)碼就是其本身,負(fù)數(shù)的補(bǔ)碼表示的實(shí)質(zhì)是把負(fù)數(shù)映像到正值區(qū)域,因此加上一個(gè)負(fù)數(shù)或減去一個(gè)正數(shù)可以用加上另一個(gè)數(shù)(補(bǔ)碼)來(lái)代替。②從表示符號(hào)的角度看,符號(hào)位的值代表了數(shù)的正確符號(hào),0表示正數(shù),1表示負(fù)數(shù)。從映像值來(lái)看,符號(hào)位的值是映像值的一個(gè)數(shù)位,因此在補(bǔ)碼運(yùn)算中,符號(hào)位與數(shù)值位一樣參加運(yùn)算。補(bǔ)碼的幾何性質(zhì)說(shuō)明了補(bǔ)碼運(yùn)算的基礎(chǔ)。補(bǔ)碼的幾何性質(zhì)

原碼運(yùn)算時(shí)符號(hào)位不能參加運(yùn)算。注意2024/2/3475.補(bǔ)碼的幾個(gè)關(guān)系

1)補(bǔ)碼與原碼的關(guān)系若x≥0,則[x]補(bǔ)=[x]原若x<0,則將除符號(hào)位以外的[x]原各位取反(符號(hào)位不變),然后在最低位上加1,即得到[x]補(bǔ)。反之,將除符號(hào)位以外的[x]補(bǔ)的各位取反(符號(hào)位不變),然后在最低位上加1,即得到[x]原。補(bǔ)碼中特殊數(shù)-1(純小數(shù))和-2n(純整數(shù))的表示,在原碼中沒(méi)有對(duì)應(yīng)表示。注意2024/2/348例2.15⑴x=+0.1001100[x]原=0.1001100[x]補(bǔ)=0.1001100⑵x=-0.1001100[x]原=1.1001100[x]補(bǔ)=1.0110100⑶x=+1001100[x]原=01001100[x]補(bǔ)=01001100⑷x=-1001100[x]原=11001100[x]補(bǔ)=101101002024/2/3492)補(bǔ)碼與機(jī)器負(fù)數(shù)的關(guān)系在補(bǔ)碼運(yùn)算中稱[x]補(bǔ)為機(jī)器正數(shù),[-x]補(bǔ)為機(jī)器負(fù)數(shù)。已知[x]補(bǔ),求機(jī)器負(fù)數(shù)的方法:將[x]補(bǔ)的各位(含符號(hào)位)取反,然后在最低位上加1,即可得到[-x]補(bǔ)。反之亦然。求[-x]補(bǔ),也稱為對(duì)[x]補(bǔ)的求補(bǔ)。2024/2/350例2.16[x]補(bǔ)=1.0011010[-x]補(bǔ)=0.1100110[x]補(bǔ)=10110010[-x]補(bǔ)=01001110簡(jiǎn)單求補(bǔ)方法:在取反過(guò)程中,低位最后一個(gè)1不變,最后一個(gè)1后的0也都不變。2024/2/3513)補(bǔ)碼的移位規(guī)則補(bǔ)碼數(shù)右移規(guī)則:符號(hào)位不變,數(shù)值位各位向右移位,高位移空位置補(bǔ)與符號(hào)位相同的代碼。補(bǔ)碼的左移規(guī)則:連同符號(hào)位同時(shí)左移,低位移空位置補(bǔ)0。如果移位后符號(hào)位與移位前符號(hào)位不一致,說(shuō)明移位出錯(cuò),將有效位移出了。2024/2/352例2.17[x]補(bǔ)=1.0011010[x]補(bǔ)=1.1001101[x]補(bǔ)=0.0110010[x]補(bǔ)=0.0011001[x]補(bǔ)=10110010[x]補(bǔ)=11011001[x]補(bǔ)=1.1111010[2x]補(bǔ)=1.1110100[x]補(bǔ)=10110010[2x]補(bǔ)=01100100出錯(cuò)!2024/2/3536.補(bǔ)碼的模補(bǔ)碼總是對(duì)確定的模而言的。如果補(bǔ)碼運(yùn)算結(jié)果超過(guò)了模,則模將自動(dòng)丟失。補(bǔ)碼運(yùn)算在運(yùn)算過(guò)程中,模不能改變。因?yàn)檎麛?shù)補(bǔ)碼的模不同,所以不能將不同位數(shù)的補(bǔ)碼直接進(jìn)行運(yùn)算。如需進(jìn)行運(yùn)算,需要進(jìn)行符號(hào)擴(kuò)展。例2.18[x]補(bǔ)+[y]補(bǔ)=0110+1101=10011=0011[x]補(bǔ)+[y]補(bǔ)=11010111+1011

=11010111+11111011

=111010010=110100102024/2/3547.補(bǔ)碼的特點(diǎn)⑴

在補(bǔ)碼表示中,用符號(hào)位x0表示數(shù)值的正負(fù),形式與原碼表示相同,即0正1負(fù)。但補(bǔ)碼的符號(hào)可以看作是數(shù)值的一部分參加運(yùn)算。⑵

在補(bǔ)碼表示中,數(shù)值“0”只有一種表示方法,即00…0。⑶

負(fù)數(shù)補(bǔ)碼的表示范圍比負(fù)數(shù)原碼的表示范圍略寬。純小數(shù)的補(bǔ)碼可以表示到“-1”,純整數(shù)的補(bǔ)碼可以表示到“-2n”。由于補(bǔ)碼表示中的符號(hào)位可以與數(shù)值位一起參加運(yùn)算,并且可以將減法轉(zhuǎn)換為加法進(jìn)行運(yùn)算,簡(jiǎn)化了運(yùn)算過(guò)程,因此計(jì)算機(jī)中均采用補(bǔ)碼進(jìn)行加減運(yùn)算。2024/2/3552.2.4反碼表示反碼實(shí)質(zhì)上是補(bǔ)碼的一個(gè)特例,其特別之處在于反碼的模比補(bǔ)碼的模小一個(gè)最低位上的1。1.反碼的定義

純小數(shù)反碼的定義(n為小數(shù)點(diǎn)后的數(shù)值位數(shù))純整數(shù)反碼的定義(n為除符號(hào)外的數(shù)值位數(shù))2024/2/3562.反碼的求法若x≥0則[x]反=x,符號(hào)位為0若x<0,則將x的各位取反,符號(hào)位等于1,即得到[x]反。例2.19x=+0.1001100則[x]反=0.1001100x=-0.1001100則[x]反=1.0110011x=+1001100則[x]反=01001100x=-1001100則[x]反=101100112024/2/3573.反碼中“0”的表示反碼中“0”有兩種表示純小數(shù)反碼

[+0]反=0.00…0[-0]反=1.11…1純整數(shù)反碼

[+0]反=00…0[-0]反=11…12024/2/3584.反碼的表數(shù)范圍反碼的表數(shù)范圍與原碼相同。在純小數(shù)反碼中不能表示“-1”在純整數(shù)反碼中不能表示“-2n”2024/2/359若x≥0,則[x]反=[x]原若x<0,則將除符號(hào)位以外的[x]原各位取反(符號(hào)位不變),即得到[x]反。若x<0,將除符號(hào)位以外的[x]反的各位取反(符號(hào)位不變),即得到[x]原。5.反碼與原碼的關(guān)系2024/2/3605.反碼的特點(diǎn)⑴

在反碼表示中,用符號(hào)位x0表示數(shù)值的正負(fù),形式與原碼表示相同,即0正1負(fù)。⑵

在反碼表示中,數(shù)值0有兩種表示方法。⑶

反碼的表示范圍與原碼的表示范圍相同。注意,純小數(shù)的反碼不能表示“-1”,純整數(shù)的反碼不能表示“-2n”。反碼表示在計(jì)算機(jī)中往往作為數(shù)碼變換的中間環(huán)節(jié)。2024/2/3612.2.5移碼表示移碼也稱為增碼、余碼。在計(jì)算機(jī)中,移碼主要用于表示浮點(diǎn)數(shù)的階碼。1.移碼的定義

純小數(shù)移碼的定義

[x]移=1+x-1≤x<1純整數(shù)移碼的定義

[x]移=2n+x-2n≤x<2nn為除符號(hào)外的數(shù)值位數(shù)由于移碼通常用于表示浮點(diǎn)數(shù)的階碼。所以主要考慮整數(shù)的移碼表示。2024/2/362例2.20在字長(zhǎng)為8位的機(jī)器中,[x]移=27+x設(shè)x=+1100101則[x]移=27+1100101=10000000+1100101

=11100101設(shè)x=-1100101則[x]移=27-1100101=10000000-1100101

=000110112024/2/363移碼的幾何性質(zhì)當(dāng)n=3時(shí),純整數(shù)的移碼為:真值移碼真值移碼+000(+0)1000-001(-1)0111

+001(+1)1001-010(-2)0110

+010(+2)1010-011(-3)0101

+011(+3)1011-100(-4)0100

+100(+4)1100-101(-5)0011

+101(+5)1101-110(-6)0010

+110(+6)1110-111(-7)0001

+111(+7)1111-1000(-8)00002024/2/36401234567-1-2-3-4-5-6-7-80000001001001000101011001110011000010011010110011011110111110111移碼的幾何性質(zhì)真值移碼2024/2/365移碼表示的實(shí)質(zhì)是把真值映像到一個(gè)正數(shù)域,因此移碼的大小可直觀地反映真值的大小。不管正數(shù)還是負(fù)數(shù),用移碼表示時(shí),都可以按無(wú)符號(hào)數(shù)比較大小。2024/2/3662.移碼中“0”的表示移碼中“0”的表示是唯一的[+0]移=[-0]移=10…0(純整數(shù))移碼的表數(shù)范圍與補(bǔ)碼一致純整數(shù)移碼表示的最小數(shù)可以表示到-2n2024/2/3673.移碼與補(bǔ)碼的關(guān)系整數(shù)補(bǔ)碼的數(shù)值部分不變,符號(hào)取反,即得整數(shù)移碼。反之亦然。即:

x≥0時(shí)[x]移=[x]補(bǔ)+2nx<0時(shí)[x]移=[x]補(bǔ)-2n2024/2/3684.移碼的特點(diǎn)

⑴設(shè)[x]移=x0x1x2…xn,符號(hào)位x0表示真值x的正負(fù):x0=1,x為正;x0=0,x為負(fù)。⑵真值0的移碼表示只有一種形式。⑶移碼與補(bǔ)碼的表示范圍相同。純小數(shù)的移碼可以表示到“-1”,[-1]移=0.0…0;純整數(shù)的移碼可以表示到“-2n”,[-2n]移=00…0,n為數(shù)值部分的長(zhǎng)度。2024/2/369⑷

真值大時(shí),對(duì)應(yīng)的移碼也大;

真值小時(shí),對(duì)應(yīng)的移碼也小。當(dāng)[x]移=0時(shí),x為編碼所能夠表示的最小值。2024/2/3705.特殊的移碼根據(jù)移碼的幾何性質(zhì),可以將移碼的定義進(jìn)行擴(kuò)展,得到特殊的移碼為:移碼=K+實(shí)際數(shù)值K:約定的移數(shù)值例:移127碼,移數(shù)值為127,即:移127碼=127+實(shí)際數(shù)值2024/2/371例2.21求+12和-3的8位移127碼的二進(jìn)制編碼形式。解:(+12)10=1100,

[+12]移127碼=127+12=(139)10

=(1111111+1100)2

=(10001011)2(-3)10=11,

[-3]移127碼=127-3=(124)10

=(1111111-11)2

=(01111100)22024/2/372不同碼制之間的轉(zhuǎn)換2024/2/373例2.22設(shè)某計(jì)算機(jī)的字長(zhǎng)為8位,采用整數(shù)表示。求表中機(jī)器數(shù)在不同表示形式中對(duì)應(yīng)的十進(jìn)制真值。

表示方法機(jī)器數(shù)原碼補(bǔ)碼反碼移碼無(wú)符號(hào)數(shù)010010011010110111111111+73-45-127+73-83-1+73-82-0-55+45+127731732552024/2/374C語(yǔ)言中的整數(shù)類型C語(yǔ)言中的無(wú)符號(hào)整數(shù)的表示:Unsignedshort、Unsignedint(Unsigned)Unsignedlong等C語(yǔ)言中帶符號(hào)整數(shù)采用補(bǔ)碼表示:Short、int、long等常在數(shù)據(jù)的后面加一個(gè)“u”或“U”來(lái)表示無(wú)符號(hào)數(shù)。例:12345U、0x5B6Fu2024/2/375C語(yǔ)言中允許無(wú)符號(hào)整數(shù)與帶符號(hào)整數(shù)之間的轉(zhuǎn)換,轉(zhuǎn)換后的數(shù)的真值是將原二進(jìn)制機(jī)器數(shù)按轉(zhuǎn)換后的數(shù)據(jù)類型重新解釋得到。例:在32位機(jī)中,有以下C代碼:1intx=-1

2Unsignedu=2147483648(即231)

3

4printf(“x=%u=%d\n,x,x)

5printf(“u=%u=%d\n,u,u)輸出結(jié)果:x=4294967295=-1u=2147483648=-21474836482024/2/376x的輸出結(jié)果中-1的補(bǔ)碼整數(shù)表示為“111???1”通過(guò)%d作為帶符號(hào)數(shù)解釋時(shí),其值為“-1”通過(guò)%u作為無(wú)符號(hào)數(shù)解釋時(shí),在32位機(jī)中其值為:232-1=4294967295u的輸出結(jié)果中231的無(wú)符號(hào)整數(shù)表示為“100???0”通過(guò)%u作為無(wú)符號(hào)數(shù)解釋時(shí),其值為231“2147483648”通過(guò)%d作為帶符號(hào)數(shù)解釋時(shí),其值為

“-2147483648”2024/2/377C語(yǔ)言中,如果在執(zhí)行一個(gè)運(yùn)算中有帶符號(hào)整數(shù)與無(wú)符號(hào)數(shù)同時(shí)參加,則C編譯器會(huì)隱含地將帶符號(hào)整數(shù)強(qiáng)制類型轉(zhuǎn)換為無(wú)符號(hào)數(shù),因而會(huì)帶來(lái)意想不到的結(jié)果。例:以下無(wú)符號(hào)運(yùn)算的結(jié)果與直覺(jué)不符-2147483648==2147483648U結(jié)果為√∵無(wú)符號(hào)運(yùn)算中100???0B=100???0B-2147483648<

2147483647U結(jié)果為×∵無(wú)符號(hào)運(yùn)算中

100???0B(232)>011???1B(232-1)2024/2/3782.3數(shù)的定點(diǎn)表示與浮點(diǎn)表示任何一個(gè)數(shù)均可表示為:

(N)R=S×ReR:基值。計(jì)算機(jī)中常用的R可取2、8、16等。S:尾數(shù)。代表數(shù)N的有效數(shù)字。計(jì)算機(jī)中一般表示為純小數(shù)。e:階碼。代表數(shù)N的小數(shù)點(diǎn)的實(shí)際位置。一般表示為純整數(shù)。例2.23(123.45)10=12345×10-2=0.12345×103(11011.101)2=0.11011101×25=0.11011101×2101=11011101×2-3=11011101×2-112024/2/3792.3.1定點(diǎn)表示定點(diǎn)表示:約定計(jì)算機(jī)中所有數(shù)據(jù)的小數(shù)點(diǎn)位置均是相同的而且是固定不變的。定點(diǎn)表示是一種階碼e的取值固定不變的機(jī)器數(shù)表示。當(dāng)采用定點(diǎn)表示時(shí),(N)R=S×Re

中e的取值固定不變。定點(diǎn)數(shù)有兩種表示方法:定點(diǎn)小數(shù)和定點(diǎn)整數(shù)。機(jī)器確定后,e就確定了,不能更改,也不能兩者并存。2024/2/3801.定點(diǎn)小數(shù)e=0,表示純小數(shù),約定小數(shù)點(diǎn)在符號(hào)位與最高數(shù)值位之間。定點(diǎn)小數(shù)的格式數(shù)符尾數(shù)x0x1x2

……xn小數(shù)點(diǎn)2024/2/3812.定點(diǎn)整數(shù)e=n,表示純整數(shù),約定小數(shù)點(diǎn)在最低有效數(shù)值位之后。定點(diǎn)整數(shù)的格式數(shù)符尾數(shù)x0x1x2……xn小數(shù)點(diǎn)2024/2/3823.定點(diǎn)數(shù)的表示范圍設(shè)數(shù)據(jù)為N,機(jī)器字長(zhǎng)為n+1,其中1位符號(hào)位,n位數(shù)值位。在不同的表示方法下,所能表示的數(shù)的范圍不同。⑴原碼表示二進(jìn)制定點(diǎn)小數(shù)的表示范圍為:

0≤︱N︱≤1-2-n二進(jìn)制定點(diǎn)整數(shù)的表示范圍為:

0≤︱N︱≤2n-12024/2/383機(jī)器數(shù)真值數(shù)符尾數(shù)(n位)定點(diǎn)小數(shù)定點(diǎn)整數(shù)最小正數(shù)000…01+2-n+1最大正數(shù)011…111-2-n2n-1最大負(fù)數(shù)100…01-2-n-1最小負(fù)數(shù)111…11-(1-2-n)-(2n-1)定點(diǎn)原碼數(shù)的表示范圍2024/2/384⑵反碼表示定點(diǎn)反碼數(shù)的表示范圍與定點(diǎn)原碼數(shù)的表示范圍相同。定點(diǎn)反碼表示的表示范圍為:機(jī)器數(shù)真值數(shù)符尾數(shù)(n位)定點(diǎn)小數(shù)定點(diǎn)整數(shù)最小正數(shù)000…01+2-n+1最大正數(shù)011…111-2-n2n-1最大負(fù)數(shù)111…10-2-n-1最小負(fù)數(shù)100…00-(1-2-n)-(2n-1)2024/2/385⑶補(bǔ)碼表示二進(jìn)制定點(diǎn)小數(shù)的表示范圍為:-1≤N≤1-2-n二進(jìn)制定點(diǎn)整數(shù)的表示范圍為:-2n≤N≤2n-12024/2/386定點(diǎn)補(bǔ)碼數(shù)的表示范圍機(jī)器數(shù)真值數(shù)符尾數(shù)(n位)定點(diǎn)小數(shù)定點(diǎn)整數(shù)最小正數(shù)000…01+2-n+1最大正數(shù)011…111-2-n2n-1最大負(fù)數(shù)111…11-2-n-1最小負(fù)數(shù)100…00-1-2n2024/2/387⑷移碼表示定點(diǎn)移碼數(shù)的表示范圍與定點(diǎn)補(bǔ)碼碼數(shù)的表示范圍相同。其表示范圍為:機(jī)器數(shù)真值數(shù)符尾數(shù)(n位)定點(diǎn)小數(shù)定點(diǎn)整數(shù)最小正數(shù)100…01+2-n+1最大正數(shù)111…111-2-n2n-1最大負(fù)數(shù)011…11-2-n-1最小負(fù)數(shù)000…00-1-2n2024/2/388在補(bǔ)碼和移碼表示范圍中,最小負(fù)數(shù)比原碼和反碼表示范圍大一個(gè)數(shù),定點(diǎn)小數(shù)為“-1”,定點(diǎn)整數(shù)為“-2n”。以定點(diǎn)整數(shù)為例,原碼和補(bǔ)碼表示范圍的數(shù)軸表示形式為:0+12n-1-1-(2n-1)11…1110…0000…0010…0100…0101…11原碼0+12n-1-1-(2n-1)10…0100…0011…1100…0101…11補(bǔ)碼-2n10…002024/2/389從數(shù)軸中可見(jiàn),最大負(fù)數(shù)到最小負(fù)數(shù),最小正數(shù)到最大正數(shù)之間以及0,為機(jī)器數(shù)所能表達(dá)的數(shù)。0最小負(fù)數(shù)負(fù)數(shù)區(qū)機(jī)器零上溢區(qū)下溢區(qū)正數(shù)區(qū)上溢區(qū)最大負(fù)數(shù)最小正數(shù)最大正數(shù)2024/2/390機(jī)器零:小于機(jī)器數(shù)最小正數(shù),大于機(jī)器數(shù)最大負(fù)數(shù)的數(shù)。正溢出:大于機(jī)器數(shù)最大正數(shù)的數(shù)。負(fù)溢出:小于機(jī)器數(shù)最小負(fù)數(shù)的數(shù)。因?yàn)檎绯龊拓?fù)溢出都表示數(shù)的絕對(duì)值超出了機(jī)器數(shù)所能表示的最大絕對(duì)值,所以稱這類數(shù)處于上溢區(qū)。因?yàn)閷儆跈C(jī)器零的數(shù)均小于機(jī)器數(shù)所能表示的最小絕對(duì)值,所以稱這類數(shù)處于下溢區(qū)。2024/2/3913.定點(diǎn)數(shù)的分辨率

定點(diǎn)數(shù)在數(shù)軸上的分布是不連續(xù)的,定點(diǎn)數(shù)的分辨率是指相鄰兩個(gè)定點(diǎn)數(shù)之間的最小間隔。字長(zhǎng)為n+1的定點(diǎn)小數(shù)的分辨率為2-n;字長(zhǎng)為n+1的定點(diǎn)整數(shù)的分辨率為1。2024/2/3924.定點(diǎn)機(jī)的特點(diǎn)

硬件上只考慮定點(diǎn)小數(shù)或定點(diǎn)整數(shù)運(yùn)算的計(jì)算機(jī)稱為定點(diǎn)機(jī)。定點(diǎn)機(jī)的優(yōu)點(diǎn):運(yùn)算簡(jiǎn)單,硬件結(jié)構(gòu)比較簡(jiǎn)單。定點(diǎn)機(jī)存在的問(wèn)題:⑴所能表示的數(shù)據(jù)范圍小。⑵

使用不方便,運(yùn)算精度較低。⑶

存儲(chǔ)單元利用率低。2024/2/393比例因子的選擇與溢出在定點(diǎn)運(yùn)算中,參加運(yùn)算的數(shù)據(jù)必須是定點(diǎn)小數(shù)或定點(diǎn)整數(shù)。因此在運(yùn)算之前,必須選擇一個(gè)恰當(dāng)?shù)谋壤蜃?,將所有參加運(yùn)算的數(shù)均化成純小數(shù)或純整數(shù),然后再進(jìn)行運(yùn)算。運(yùn)算結(jié)果再根據(jù)所選的比例因子轉(zhuǎn)換成正確的值。比例因子必須選擇恰當(dāng)。選擇太大,將會(huì)影響運(yùn)算精度;選擇太小,會(huì)使運(yùn)算結(jié)果超出機(jī)器所能表示的數(shù)據(jù)范圍,即出現(xiàn)溢出。溢出:運(yùn)算結(jié)果超出機(jī)器所能表示的數(shù)據(jù)范圍。2024/2/394例2.24在定點(diǎn)小數(shù)機(jī)器中計(jì)算11.01+10.01選擇比例因子2-2=0.01,可將兩操作數(shù)變換為0.1101+0.1001但0.1101+0.1001=1.0110,運(yùn)算結(jié)果不是純小數(shù),出現(xiàn)了機(jī)器數(shù)不能表示的數(shù),即出現(xiàn)了正溢出。如果選擇比例因子2-3=0.001,可將兩操作數(shù)變換為0.01101+0.01001則運(yùn)算結(jié)果0.01101+0.01001=0.10110為正常結(jié)果。將0.10110除以比例因子2-3,可得到正確結(jié)果101.102024/2/395一旦出現(xiàn)溢出,機(jī)器將無(wú)法正確表示和處理,所以機(jī)器在運(yùn)算過(guò)程中必須及時(shí)地識(shí)別和處理溢出。比例因子的選擇,早期是由用戶自己進(jìn)行的。在現(xiàn)代的計(jì)算機(jī)中,比例因子的選擇是由系統(tǒng)程序(如編譯程序)完成的,對(duì)用戶往往是透明的。2024/2/396定點(diǎn)機(jī)的數(shù)據(jù)存儲(chǔ)單元的利用率往往很低。例如在采用定點(diǎn)小數(shù)的機(jī)器中,必須把所有參加運(yùn)算的數(shù)據(jù)至少都除以這些數(shù)據(jù)中的最大數(shù),才能把所有數(shù)據(jù)都化成純小數(shù),但這樣可能會(huì)造成很多數(shù)據(jù)出現(xiàn)大量的前置0,從而浪費(fèi)了許多存儲(chǔ)單元。2024/2/397結(jié)論:定點(diǎn)表示計(jì)算簡(jiǎn)單,硬件實(shí)現(xiàn)容易。但數(shù)據(jù)表示范圍小,比例因子選擇困難,很難兼顧數(shù)值范圍和精度的要求,不適合科學(xué)計(jì)算。怎么辦?2024/2/3982.3.2浮點(diǎn)表示浮點(diǎn)表示:是指各個(gè)數(shù)的小數(shù)點(diǎn)位置不是固定不變的,而是可以浮動(dòng)的。即(N)R=S×Re中的e值是可變的。由于e的取值可變,因此在機(jī)器中必須將e表示出來(lái)。2024/2/3991.浮點(diǎn)表示的數(shù)據(jù)格式浮點(diǎn)數(shù)由階碼和尾數(shù)兩部分組成。階碼:表示數(shù)的小數(shù)點(diǎn)實(shí)際位置。尾數(shù):表示數(shù)的有效數(shù)字。尾數(shù)的基數(shù)R是設(shè)計(jì)者約定的,用隱含方法表示。通常取R=2,也可以采用4、8、16進(jìn)制。階碼均采用2為基數(shù)。浮點(diǎn)數(shù)的表示格式中,包括1位數(shù)符、用n位純小數(shù)表示的尾數(shù)部分、1位階符和用m位純整數(shù)表示的階碼部分。數(shù)符階符階碼尾數(shù)1位1位m位n位2024/2/3100浮點(diǎn)數(shù)的兩種表示格式在實(shí)際機(jī)器中,通常都采用后一種表示格式。2024/2/31012.浮點(diǎn)數(shù)的規(guī)格化表示數(shù)據(jù)采用浮點(diǎn)表示時(shí),存在兩個(gè)問(wèn)題:⑴如何盡可能多地保留有效數(shù)字;⑵如何保證浮點(diǎn)表示的唯一。

例2.250.001001×25有多種表示:0.001001×25=0.100100×23=0.00001001×27所以在浮點(diǎn)表示下的代碼不唯一。若規(guī)定尾數(shù)的位數(shù)為6位,則采用0.00001001×27就變成了0.000010×27,丟掉了有效數(shù)字,減少了精度。因此為了盡可能多地保留有效數(shù)字,應(yīng)采用0.100100×23的表示形式。2024/2/3102浮點(diǎn)數(shù)采用規(guī)格化表示方法的目的:⑴提高運(yùn)算精度,充分利用尾數(shù)的有效數(shù)位,盡可能占滿位數(shù),以保留更多的有效數(shù)字。⑵保證浮點(diǎn)數(shù)表示的唯一性。例2.26

0.100100×23=0.001001×25為達(dá)到上述目的,需要盡可能去掉尾數(shù)中的前置“0”

。即盡量使小數(shù)點(diǎn)后第一位為“1”。對(duì)于二進(jìn)制數(shù),就是要滿足2024/2/31033.規(guī)格化數(shù)的定義原碼表示的規(guī)格化數(shù)若[S]原=Sf.S1S2…Sn,則滿足的數(shù)為規(guī)格化數(shù)。對(duì)于[S]原=Sf.S1S2…Sn,其規(guī)格化標(biāo)志是:

S1=1即:[S]原=0.1xx…x或[S]原=1.1xx…x

例2.27[S]原=0.1101101、[S]原=1.1101101是規(guī)格化數(shù)

[S]原=0.0101101、[S]原=1.0101101不是規(guī)格化數(shù)2024/2/3104補(bǔ)碼表示的規(guī)格化數(shù)若[S]補(bǔ)=Sf.S1S2…Sn,則滿足

和的數(shù)為規(guī)格化數(shù)。對(duì)于[S]補(bǔ)=Sf.S1S2…Sn,其規(guī)格化標(biāo)志是:

Sf⊕S1=1即:[S]補(bǔ)=0.1xx…x或[S]補(bǔ)=1.0xx…x2024/2/3105注意:補(bǔ)碼表示的規(guī)格化數(shù)中,

不是規(guī)格化數(shù),而-1是規(guī)格化數(shù)。因?yàn)椋剑?.1,寫(xiě)成補(bǔ)碼為1.1,不符合規(guī)格化規(guī)定,所以不是規(guī)格化數(shù)。-1的補(bǔ)碼是1.000,符合規(guī)格化規(guī)定,所以-1是規(guī)格化數(shù)。例2.28[S]補(bǔ)=0.1101101、[S]補(bǔ)=1.0101101是規(guī)格化數(shù)[S]補(bǔ)=0.0101101、[S]補(bǔ)=1.1101101不是規(guī)格化數(shù)2024/2/31063.浮點(diǎn)數(shù)的表示范圍要求浮點(diǎn)數(shù)的表示范圍,實(shí)質(zhì)是求出浮點(diǎn)數(shù)所能表示的最小負(fù)數(shù)、最大負(fù)數(shù),最小正數(shù)和最大正數(shù)這四個(gè)典型數(shù)據(jù)。2024/2/3107浮點(diǎn)數(shù)能正確表達(dá)的數(shù):處于0以及處于最大負(fù)數(shù)到最小負(fù)數(shù)(負(fù)數(shù)區(qū))之間、最小正數(shù)到最大正數(shù)(正數(shù)區(qū))之間的數(shù)。機(jī)器零:處于最大負(fù)數(shù)和最小正數(shù)(下溢區(qū))的浮點(diǎn)數(shù),由于其絕對(duì)值小于可表示的數(shù)值,在計(jì)算機(jī)中通常作為“0”來(lái)處理,稱為機(jī)器零。正溢出:數(shù)據(jù)大于最大正數(shù)。負(fù)溢出:數(shù)據(jù)小于最小負(fù)數(shù)。如果數(shù)據(jù)的絕對(duì)值大于機(jī)器所能表示的數(shù)值,計(jì)算機(jī)將做溢出處理。2024/2/3108設(shè)浮點(diǎn)數(shù)的格式為:數(shù)符階符階碼尾數(shù)1位1位m位n位2024/2/3109階碼和尾數(shù)均用原碼表示時(shí)的浮點(diǎn)數(shù)表示范圍數(shù)符階符階碼(m位)尾數(shù)(n位)真值非規(guī)格化最小正數(shù)0111…1100…01規(guī)格化最小正數(shù)0111…1110…00最大正數(shù)0011…1111…11非規(guī)格化最大負(fù)數(shù)1111…1100…01規(guī)格化最大負(fù)數(shù)1111…1110…00最小負(fù)數(shù)1011…1111…112024/2/3110階碼和尾數(shù)均用補(bǔ)碼表示時(shí)的浮點(diǎn)數(shù)表示范圍數(shù)符階符階碼(m位)尾數(shù)(n位)真值非規(guī)格化最小正數(shù)0100…0000…01規(guī)格化最小正數(shù)0100…0010…00最大正數(shù)0011…1111…11非規(guī)格化最大負(fù)數(shù)1100…0011…11規(guī)格化最大負(fù)數(shù)1100…0001…11最小負(fù)數(shù)1011…1100…002024/2/3111階碼用移碼,尾數(shù)用補(bǔ)碼表示時(shí)的浮點(diǎn)數(shù)表示范圍數(shù)符階符階碼(m位)尾數(shù)(n位)真值非規(guī)格化最小正數(shù)0000…0000…01規(guī)格化最小正數(shù)0000…0010…00最大正數(shù)0111…1111…11非規(guī)格化最大負(fù)數(shù)1000…0011…11規(guī)格化最大負(fù)數(shù)1000…0001…11最小負(fù)數(shù)1111…1100…002024/2/31124.浮點(diǎn)表示中階碼與尾數(shù)位數(shù)的選擇在浮點(diǎn)數(shù)表示中尾數(shù)的位數(shù)決定了數(shù)據(jù)表示的精度。增加尾數(shù)的位數(shù)可增加有效數(shù)字位數(shù),即提高數(shù)據(jù)表示精度。階碼的位數(shù)決定了數(shù)據(jù)表示的范圍。增加階碼的位數(shù),可擴(kuò)大數(shù)據(jù)表示的范圍。因此當(dāng)字長(zhǎng)一定的條件下,必須合理地分配階碼和尾數(shù)的位數(shù),以滿足應(yīng)用的需要。2024/2/3113為了得到較高的精度和較大的數(shù)據(jù)表示范圍,在很多機(jī)器中都設(shè)置單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)等不同的浮點(diǎn)數(shù)格式。單精度浮點(diǎn)數(shù)就是用一個(gè)字長(zhǎng)表示一個(gè)浮點(diǎn)數(shù)。雙精度浮點(diǎn)數(shù)是用二個(gè)字長(zhǎng)表示一個(gè)浮點(diǎn)數(shù)。2024/2/3114例2.2932位的VAX-11機(jī)的浮點(diǎn)數(shù)格式單精度浮點(diǎn)數(shù)——

F浮點(diǎn)雙精度浮點(diǎn)數(shù)——

D浮點(diǎn)數(shù)符階碼尾數(shù)1位8位23位數(shù)符階碼尾數(shù)1位8位55位32位64位2024/2/3115G浮點(diǎn)H浮點(diǎn)數(shù)符階碼尾數(shù)1位11位52位數(shù)符階碼尾數(shù)1位15位112位64位128位2024/2/31165.

浮點(diǎn)數(shù)的機(jī)器零問(wèn)題浮點(diǎn)數(shù)的機(jī)器零:⑴如果一個(gè)浮點(diǎn)數(shù)的尾數(shù)為全0,則不論其階碼為何值;⑵如果一個(gè)浮點(diǎn)數(shù)的階碼小于它所能表示的最小數(shù),則不論其尾數(shù)為何值;計(jì)算機(jī)在處理時(shí)都把這種浮點(diǎn)數(shù)當(dāng)作“0”看待,稱為機(jī)器零。2024/2/3117(1)尾數(shù)S=0,浮點(diǎn)數(shù)N=S×Re,對(duì)所有e值,有N=0×Re=0(2)當(dāng)E<-2n,無(wú)論S等于多少,數(shù)據(jù)N都小于機(jī)器所能表示的最小數(shù),即出現(xiàn)浮點(diǎn)數(shù)下溢,機(jī)器通常用N=0來(lái)處理,即當(dāng)作機(jī)器零。機(jī)器零2024/2/3118浮點(diǎn)數(shù)的階碼采用移碼表示時(shí)的機(jī)器零當(dāng)浮點(diǎn)數(shù)的階碼采用移碼表示、尾數(shù)采用補(bǔ)碼表示時(shí),如果階碼為它所能表示的最小數(shù)-2m(m為階碼的位數(shù))且尾數(shù)為0時(shí),其階碼的表現(xiàn)形式全為0,尾數(shù)的表現(xiàn)形式也為全0,這時(shí)機(jī)器零的表現(xiàn)形式為000…00。這種全0表示,有利于簡(jiǎn)化機(jī)器中的判“0”電路。2024/2/3119例:階碼用移碼,尾數(shù)用補(bǔ)碼表示非規(guī)格化最小正數(shù):0

000…0000…01

規(guī)格化最小正數(shù):0

000…0010…00比上述數(shù)據(jù)小的數(shù)都將被視為機(jī)器零。2024/2/31207.IEEE754浮點(diǎn)數(shù)標(biāo)準(zhǔn)二進(jìn)制浮點(diǎn)數(shù)的表示,由于不同機(jī)器所選用的基值、尾數(shù)位長(zhǎng)度和階碼位長(zhǎng)度不同,因此對(duì)浮點(diǎn)數(shù)表示有較大差別,這就不利于軟件在不同計(jì)算機(jī)間的移植。美國(guó)IEEE(電氣及電子工程師協(xié)會(huì))為此提出了一個(gè)從系統(tǒng)結(jié)構(gòu)角度支持浮點(diǎn)數(shù)的表示方法,稱為IEEE標(biāo)準(zhǔn)754(IEEE,1985),當(dāng)今流行的計(jì)算機(jī)幾乎都采用了這一標(biāo)準(zhǔn)。2024/2/3121IEEE754標(biāo)準(zhǔn)在表示浮點(diǎn)數(shù)時(shí),每個(gè)浮點(diǎn)數(shù)均由三部分組成:符號(hào)位S,指數(shù)部分E和尾數(shù)部分M。浮點(diǎn)數(shù)可采用以下四種基本格式:(1)單精度格式(32位):E=8位,M=23位。(2)擴(kuò)展單精度格式:E≥11位,M=31位。(3)雙精度格式(64位):E=11位,M=52位。(4)擴(kuò)展雙精度格式:E≥15位,M≥63位。SEM數(shù)符指數(shù)尾數(shù)2024/2/3122IEEE754單精度浮點(diǎn)數(shù)格式目前廣泛采用的IEEE754浮點(diǎn)數(shù)據(jù)編碼標(biāo)準(zhǔn)中,32位單精度浮點(diǎn)數(shù)表示格式為:

在IEEE754標(biāo)準(zhǔn)中由32位單精度所表示的浮點(diǎn)數(shù)N的數(shù)值為:

1位8位23位SEM數(shù)符指數(shù)尾數(shù)2024/2/3123S:數(shù)符,0表示“+”,1表示“-”。E:指數(shù)即階碼部分。其中包括1位階符和7位數(shù)值。采用移127碼,移碼值為127。即階碼=127+實(shí)際指數(shù)值規(guī)定階碼的取值范圍為1~254,階碼值255和0,用于表示特殊數(shù)值。M:共23位。由于尾數(shù)采用規(guī)格化表示,所以IEEE754標(biāo)準(zhǔn)約定在小數(shù)點(diǎn)左部有一位隱含位為1,從而使尾數(shù)的實(shí)際有效位為24位,即尾數(shù)的有效值為1.M。

2024/2/3124IEEE754標(biāo)準(zhǔn)32位單精度浮點(diǎn)數(shù)N的解釋如下:若E=0,且M=0,則N為0。若E=0,且M≠0,則N=(-1)S·2-126·(0.M)。為非規(guī)格化數(shù)。若1≤E≤254,則N=(-1)S·2E-127·(1.M)。為規(guī)格化數(shù)。若E=255,且M≠0,則N=NaN(“非數(shù)值”)。若E=255,且M=0,則N=(-1)S∞(無(wú)窮大)。2024/2/3125對(duì)于絕對(duì)值較小的數(shù),為了避免下溢而損失精度,允許采用比最小規(guī)格化數(shù)還要小的非規(guī)格化數(shù)來(lái)表示。注意:非規(guī)格化數(shù)和正、負(fù)零的尾數(shù)隱含值不是“1”而是“0”。2024/2/31261.階碼為全0,尾數(shù)為全0

可以表示+0和-0,使0有了精確的表示。2.階碼為全0,尾數(shù)不為全0

可以表示非規(guī)格化數(shù),表示32位單精度非規(guī)格化浮點(diǎn)數(shù),此時(shí)的階碼為-126,且隱含位為0。3.階碼不為全0和全1

可以表示非0規(guī)格化浮點(diǎn)數(shù)。4.階碼為全1,尾數(shù)為全0

可以明確地表示+∞和-∞,使計(jì)算過(guò)程中出現(xiàn)異常時(shí)程序也能進(jìn)行下去。操作數(shù)為∞時(shí)的處理:

⑴產(chǎn)生明確結(jié)果

如a/0(a≠0)=±∞、3+(+∞)=+∞。

⑵產(chǎn)生不發(fā)信號(hào)的非數(shù)值NaN

如+∞+(-∞)、∞/∞2024/2/31275.階碼為全1,尾數(shù)不為全0

表示非數(shù)值NaN(NotaNumber)分為不發(fā)信號(hào)(quiet)和發(fā)信號(hào)(signaling)的非數(shù)值,也稱“靜止的NaN”和“通知的NaN”。當(dāng)尾數(shù)最高有效位為1時(shí)為不發(fā)信號(hào)(靜止的)NaN,當(dāng)結(jié)果產(chǎn)生這種NaN時(shí),不發(fā)例外通知,即可不進(jìn)行異常處理;

當(dāng)尾數(shù)最高有效位為0時(shí)為發(fā)信號(hào)(通知的)NaN,當(dāng)結(jié)果產(chǎn)生這種NaN時(shí),則發(fā)一個(gè)異常操作例外通知,表示要進(jìn)行異常處理。

2024/2/3128IEEE754單精度浮點(diǎn)數(shù)的特征特征符號(hào)位1指數(shù)位8尾數(shù)位23總位數(shù)32指數(shù)系統(tǒng)移碼127指數(shù)取值范圍-126~+127最小規(guī)格化數(shù)2-126最大規(guī)格化數(shù)2+128十進(jìn)制范圍10-38~+10+38最小非規(guī)格化數(shù)10-452024/2/3129例2.31將5/32及-4120表示成IEEE754單精度格式,并用十六進(jìn)制書(shū)寫(xiě)。解:(1)(5/32)10=(0.00101)2=1.01×2-3按IEEE754單精度格式得:S=0M=01000…00E=127+(-3)=124=(01111100)2其機(jī)器數(shù)表示形式為:00111110001000000000000000000000十六進(jìn)制形式:3E200000H2024/2/3130(2)(-4120)10=-1000000011000

=-1.000000011×212

S=1M=000000011…00E=127+12=139=(10001011)2其機(jī)器數(shù)表示形式為:11000101100000001100000000000000十六進(jìn)制形式:C580C000H注意:在IEEE754單精度格式中尾數(shù)默認(rèn)小數(shù)點(diǎn)前為1,即真正的尾數(shù)為1.M。階碼為移127碼,所以階碼=127+實(shí)際指數(shù)值。2024/2/3131將十六進(jìn)制的IEEE單精度浮點(diǎn)數(shù)代碼42E48000轉(zhuǎn)換成十進(jìn)制數(shù)值表示42E48000=01000010111001001000000000000000按IEEE754標(biāo)準(zhǔn)可寫(xiě)成:01000010111001001000000000000000其中符號(hào)位s=0,階碼部分值e=133,尾數(shù)部分

f=0.78515625,根據(jù)IEEE754標(biāo)準(zhǔn)的表示公式,得:(-1)0×(1+0.78515625)×2133-127=1.78515625×26=114.252024/2/3132IEEE754雙精度浮點(diǎn)數(shù)格式64位雙精度浮點(diǎn)數(shù)表示格式為:

由64位雙精度所表示的浮點(diǎn)數(shù)N的數(shù)值為:

1位11位52位SEM數(shù)符指數(shù)尾數(shù)2024/2/3133IEEE754雙精度浮點(diǎn)數(shù)的特征特征符號(hào)位1指數(shù)位11尾數(shù)位52總位數(shù)32指數(shù)系統(tǒng)移碼1023指數(shù)取值范圍-1022~+1023最小規(guī)格化數(shù)2-1022最大規(guī)格化數(shù)2+1024十進(jìn)制范圍10-308~+10+308最小非規(guī)格化數(shù)10-3242024/2/3134C語(yǔ)言中的浮點(diǎn)數(shù)類型C語(yǔ)言中浮點(diǎn)數(shù)的表示:float:對(duì)應(yīng)IEEE754單精度浮點(diǎn)數(shù)格式double:對(duì)應(yīng)IEEE754雙精度浮點(diǎn)數(shù)格式longdouble:對(duì)應(yīng)IEEE754擴(kuò)展雙精度浮點(diǎn)數(shù)格式,但其長(zhǎng)度和格式隨編譯器和處理器的不同而有所不同。2024/2/3135在int、float、double之間進(jìn)行轉(zhuǎn)換的結(jié)果:(以int為32位為例)⑴從int轉(zhuǎn)換為float時(shí),結(jié)果不會(huì)溢出,但可能有數(shù)據(jù)被舍入。⑵從int或float轉(zhuǎn)換為double時(shí),因?yàn)閐ouble的有效位數(shù)更多,故能保留精確值。⑶從double轉(zhuǎn)換為float時(shí),因?yàn)閒loat的表數(shù)范圍小,故可能發(fā)生溢出。由于float的有效位數(shù)少,故可能有數(shù)據(jù)被舍入。⑷從float或double轉(zhuǎn)換為int時(shí),因?yàn)閕nt沒(méi)有小數(shù),故可能丟失有效數(shù)據(jù)。因?yàn)閕nt的表數(shù)范圍小,故可能發(fā)生溢出。2024/2/3136例:設(shè)變量i、f、d的類型分別是int、float、double,它們的取值是除+∞、-∞、NaN以外的任意值。請(qǐng)判斷下列每個(gè)C語(yǔ)言關(guān)系表達(dá)式在32位機(jī)上運(yùn)行時(shí)是否永真。⑴i==(int)(float)i

×

∵int精度比f(wàn)loat高,∴當(dāng)i轉(zhuǎn)換為float再轉(zhuǎn)換為int時(shí),可能丟失有效位數(shù)。⑵f==(float)(int)f×

∵float有小數(shù)部分,∴當(dāng)f轉(zhuǎn)換為int再轉(zhuǎn)換為float時(shí),可能丟失小數(shù)部分。2024/2/3137⑶i==(int)(double)i√∵double比int精度高范圍大,∴當(dāng)i轉(zhuǎn)換為double再轉(zhuǎn)換為int時(shí),數(shù)值不變。⑷f(wàn)==(float)(double)f√∵double比f(wàn)loat精度高范圍大,∴當(dāng)f轉(zhuǎn)換為double再轉(zhuǎn)換為float時(shí),數(shù)值不變。⑸d==(float)d×∵double比f(wàn)loat精度高范圍大,∴當(dāng)d轉(zhuǎn)換為float時(shí),數(shù)值可能改變。2024/2/3138⑹f==-(-f)√∵浮點(diǎn)數(shù)取負(fù)就是簡(jiǎn)單地將數(shù)符取反。⑺(d+f)-d==f×∵double比f(wàn)loat精度高范圍大,∴當(dāng)d與f進(jìn)行計(jì)算時(shí),有可能因?yàn)閷?duì)階的原因使f的有效位丟失,而使計(jì)算出現(xiàn)誤差。例如當(dāng)d=1.79×10308,f=1.0時(shí),左邊的的計(jì)算由于(d+f)的對(duì)階,而使f=0,因此結(jié)果為0,但右邊結(jié)果為1。2024/2/31392.3.3定點(diǎn)表示與浮點(diǎn)表示的比較1.在字長(zhǎng)相同的條件下,浮點(diǎn)表示的數(shù)據(jù)范圍大、精度高。例:對(duì)于數(shù)據(jù)N,設(shè)機(jī)器字長(zhǎng)為16位,補(bǔ)碼表示。當(dāng)采用定點(diǎn)整數(shù)表示時(shí),有1位數(shù)符,15位尾數(shù);采用浮點(diǎn)數(shù)表示時(shí),有1位數(shù)符,1位階符,3位階碼,11位尾數(shù)。定點(diǎn)整數(shù)的表示范圍-215≤N≤-1和+1≤N≤215-1浮點(diǎn)數(shù)的表示范圍-1×27≤N≤-2-11×2-8

和2-11×2-8≤N≤(1-2-11)×272024/2/3140由于浮點(diǎn)數(shù)運(yùn)算中隨時(shí)對(duì)中間結(jié)果進(jìn)行規(guī)格化處理,所以減少了有效數(shù)字的丟失,提高了運(yùn)算精度。2.浮點(diǎn)運(yùn)算算法復(fù)雜,所需設(shè)備量大,運(yùn)算速度慢。定點(diǎn)數(shù)小數(shù)點(diǎn)固定,可以直接運(yùn)算。而浮點(diǎn)數(shù)運(yùn)算需要進(jìn)行對(duì)階(對(duì)齊小數(shù)點(diǎn))與規(guī)格化,既有尾數(shù)運(yùn)算又有階碼運(yùn)算,算法復(fù)雜,因此所需設(shè)備量大,線路復(fù)雜,運(yùn)算速度也比定點(diǎn)數(shù)運(yùn)算慢。數(shù)據(jù)表示是計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的重要問(wèn)題,同時(shí)也是算法設(shè)計(jì)的重要問(wèn)題。2024/2/31412.4非數(shù)值型數(shù)據(jù)的表示為了處理非數(shù)值領(lǐng)域的問(wèn)題,需要在計(jì)算機(jī)中引入文字、字母及一些專用符號(hào)等,以便表示文字語(yǔ)言、邏輯語(yǔ)言等信息。但由于計(jì)算機(jī)硬件能夠直接識(shí)別和處理的只是“0”、“1”二進(jìn)制信息,因此在計(jì)算機(jī)中對(duì)這類數(shù)據(jù)必須用二進(jìn)制代碼來(lái)表示。

非數(shù)值型數(shù)據(jù)表示:邏輯數(shù)、字符、字符串、文字及某些專用符號(hào)等的二進(jìn)制代碼。這些二進(jìn)制代碼并不表示數(shù)值,所以稱為非數(shù)值型數(shù)據(jù)或符號(hào)數(shù)據(jù)。2024/2/31422.4.1邏輯數(shù)——

二進(jìn)制串在計(jì)算機(jī)中一個(gè)邏輯數(shù)是用一個(gè)二進(jìn)制串來(lái)表示的。邏輯數(shù)具有下面幾個(gè)特點(diǎn):(1)邏輯數(shù)沒(méi)有符號(hào)的問(wèn)題。邏輯數(shù)中各位之間是相互獨(dú)立的,既沒(méi)有位權(quán)問(wèn)題,也沒(méi)有進(jìn)位問(wèn)題。(2)邏輯數(shù)中的“0”與“1”不代表值的大小,僅代表一個(gè)命題的真與假、是與非等邏輯關(guān)系。(3)邏輯數(shù)只能參加邏輯運(yùn)算,并且是按位進(jìn)行的。

例2.321011+1100=11112024/2/31432.4.2字符與字符串字符與字符串?dāng)?shù)據(jù)是計(jì)算機(jī)中用得最多的符號(hào)數(shù)據(jù),它是人和計(jì)算機(jī)聯(lián)系的橋梁。為使計(jì)算機(jī)硬件能夠識(shí)別和處理字符,必須對(duì)字符按一定規(guī)則用二進(jìn)制編碼。目前廣泛使用的是ASCII碼(美國(guó)國(guó)家信息交換標(biāo)準(zhǔn)字符碼)和EBCDIC碼(擴(kuò)展的二—十進(jìn)制交換碼)。2024/2/31441.字符編碼

ASCII碼是用七位二進(jìn)制表示一個(gè)字符,它包括10個(gè)數(shù)字(0~9),52個(gè)英文大、小寫(xiě)字母(A~Z,a~z),33個(gè)專用字符(如,、%、#等)和33個(gè)控制字符(如NUL、LF、CR、DEL等)共128個(gè)字符。ASCII字符編碼符號(hào)的排列次序?yàn)閎6b5b4b3b2b1b0,其中b6b5b4為高位部分,b3b2b1b0為低位部分。2024/2/31452024/2/3146NUL空VT垂直制表SOH標(biāo)題開(kāi)始FF換頁(yè)STX文本起始CR回車(chē)ETX文本結(jié)束SO移位輸出EOT傳輸結(jié)束SI移位輸入ENQ詢問(wèn)SP空間(空格)ACK應(yīng)答(肯定)DLE數(shù)據(jù)連接斷開(kāi)

BEL響鈴DCl設(shè)備控制1BS退一格DC2設(shè)備控制2HT水平制表符DC3設(shè)備控制3LF換行

DC4設(shè)備控制4SYN空轉(zhuǎn)同步NAK反向應(yīng)答(否定)ETB信息組傳送結(jié)束

溫馨提示

  • 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)論