第二章數(shù)據(jù)與文字的表示方法演示文稿_第1頁
第二章數(shù)據(jù)與文字的表示方法演示文稿_第2頁
第二章數(shù)據(jù)與文字的表示方法演示文稿_第3頁
第二章數(shù)據(jù)與文字的表示方法演示文稿_第4頁
第二章數(shù)據(jù)與文字的表示方法演示文稿_第5頁
已閱讀5頁,還剩210頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章數(shù)據(jù)與文字的表示方法演示文稿1目前一頁\總數(shù)二百一十五頁\編于十七點2優(yōu)選第二章數(shù)據(jù)與文字的表示方法目前二頁\總數(shù)二百一十五頁\編于十七點

計算機中常用的數(shù)據(jù)表示格式:兩種

定點格式,浮點格式。定點格式:數(shù)值范圍有限,處理硬件比較簡單。浮點格式:數(shù)值范圍很大,處理硬件比較復雜。1.定點數(shù)的表示方法定點格式:

約定機器中所有數(shù)據(jù)的小數(shù)點位置固定不變的。

小數(shù)點就不再使用記號“·”來表示。小數(shù)點位置固定在哪一位都可以,通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)。

目前三頁\總數(shù)二百一十五頁\編于十七點例如:

用一個n+1位字來表示一個定點數(shù)X,其中一位x0用來表示數(shù)的符號,其余位數(shù)代表它的量值。符號位x0放在最左位置,數(shù)值0和1分別代表正號和負號。對于任意定點數(shù)x=x0x1x2…xn-1xn

,在定點機中可表示為如下形式:

x0

.x

1

x2

xn-1

xn.

符號量值(尾數(shù))目前四頁\總數(shù)二百一十五頁\編于十七點

如果數(shù)X表示的是純小數(shù),小數(shù)點位于x0和x1之間。當x

1

x2

xn各位均為0時,數(shù)X的絕對值最小,|X|min=0;當各位均為1時,X的絕對值最大,|X|max=1-2-n=0.111...111故數(shù)的表示范圍:0≤|x|

≤1-2-n

=0.111…111純小數(shù)(2.1)如數(shù)C表示的是純整數(shù),小數(shù)點位于最低位CN的右邊此時數(shù)X的表示范圍:

0≤|x|≤

2-n-1=111…111純整數(shù)(2.2)目前計算機中多采用定點純整數(shù)表示,將定點表示的運算簡稱為整數(shù)運算。目前五頁\總數(shù)二百一十五頁\編于十七點

2.浮點數(shù)的表示方法電子的質量(9×10-28克)和太陽的質量(2×1033克)相差甚遠,在定點計算機中無法直接來表示這個數(shù)值范圍。要使它們送入定點計算機進行某種運算,必須對它們分別取不同的比例因子,使其數(shù)值部分絕對值小于是1.9×10-28=0.9×10-27

2×1033=0.2×1034

這里的比例因子10-27

和1034要分別存放在機器.某個存單元中,便于以后對計算結果按這個比例增大。要占用一定的存儲空間和運算時間。目前六頁\總數(shù)二百一十五頁\編于十七點

計算機中還可以這樣來表示數(shù)據(jù):把一個數(shù)的有效數(shù)字和數(shù)的范圍在計算機的一個存儲單元中分別予以表示。這種把數(shù)的范圍和精度分別表示的方法,相當于數(shù)的小數(shù)點位置隨比例因子的不同而在一定范圍內可以自由浮動,所以稱為浮點表示法。任意一個十進制數(shù)N寫成:

N=10E.M(2.3)目前七頁\總數(shù)二百一十五頁\編于十七點

在計算機中一個任意進制數(shù)N可以寫成:

N=Re.m=R士e*士m(2.4)

m

稱為浮點數(shù)的尾數(shù),是一個純小數(shù)。

e是比例因子的指數(shù),稱為浮點的指數(shù).是一個整數(shù)。比例因子的基數(shù)R對二進計數(shù)制的機器是一個常數(shù),一般規(guī)定R為2,8和16。在機器中表示一個浮點數(shù)時:

一是要給出尾數(shù),用定點小數(shù)形式表示。尾數(shù)部分給出有效數(shù)字,決定了浮點數(shù)的表示精度。二是要給出指數(shù),用整數(shù)形式表示,常稱為階碼.階碼指明小數(shù)點在數(shù)據(jù)中的位置,決定了浮點數(shù)的表示范圍。浮點數(shù)也要有符號位。目前八頁\總數(shù)二百一十五頁\編于十七點ESE1E2…EmMSM1M2…Mn階符

階碼

數(shù)符

尾數(shù)一個機器浮點數(shù)應當由階碼和尾數(shù)及其符號位組成:目前九頁\總數(shù)二百一十五頁\編于十七點

為便于軟件移植,按照IEEE754的標準,32位浮點數(shù)的標準格式為:313023220SEM32位浮點數(shù)目前十頁\總數(shù)二百一十五頁\編于十七點

64位標準格式浮點數(shù):636252510

SEM32位浮點數(shù)和64位浮點數(shù),規(guī)定基數(shù)R=2

基數(shù)2是固定常數(shù),不必用顯示方式來表示它目前十一頁\總數(shù)二百一十五頁\編于十七點

32位的浮點數(shù)中:

S是浮點數(shù)的符號位,占1位,安排在最高位,S=0表示正數(shù),S=1表示負數(shù)。

M是尾數(shù),放在低位部分,占用23位,用小數(shù)表示,小數(shù)點放在尾數(shù)域的最前面。

E是階碼,占用8位,階符采用隱含方式,采用移碼方法來表示正負指數(shù)。移碼方法對兩個指數(shù)大小的比較和對階操作都比較方便,階碼域值大者其指數(shù)值也大。采用這種方式時,將浮點數(shù)的指數(shù)真值e變成階碼E時,應將指數(shù)

e加上一個固定的偏移值127(01111111),E=e+127。

目前十二頁\總數(shù)二百一十五頁\編于十七點一個規(guī)格化的32位浮點數(shù)X的真值可表示為:

x=(-1)S×(1.M)×2E-127e=E-127

(2.5)尾數(shù)域表示的值是1.M規(guī)格化的浮點數(shù)的尾數(shù)域最左位(最高有效位)總是1,故這位經(jīng)常不存儲,認為隱藏在小數(shù)點的左邊.例:8位二進制補碼與移碼之間的關系為:

[X]移=128+[X]補

0.1M×2E=>

(1.M)×2-1×2E+128=(1.M)

×2E+128-1=(1.M)

×2E+127目前十三頁\總數(shù)二百一十五頁\編于十七點對于尾數(shù),當取絕對值且已經(jīng)規(guī)格化后,其形式一定為0.1M2M3M4…Mn,顯然僅存儲M2M3M4…Mn可以節(jié)約存儲位。

0.1M2M3M4…Mn=1.M2M3M4…Mn×2–1?階碼真值和移碼關系的說明(對于8位階碼)

由補碼和真值的關系知:

[E]移碼=[E]補碼+27=[E]補碼+128754表示真值(-1)s(0.1M)2e(-1)s(1.M)2e+128

2-1

=(-1)s(1.M)2e+127?對754-32標準尾數(shù)的說明目前十四頁\總數(shù)二百一十五頁\編于十七點64位浮點數(shù)中符號位1位,階碼域11位,尾數(shù)域52位,指數(shù)偏移值是1023

規(guī)格化的64位浮點數(shù)X的真值為:x=(-1)S×(1.M)×2E-1023e=E-1023(2.6)目前十五頁\總數(shù)二百一十五頁\編于十七點若不對浮點數(shù)的表示作出明確規(guī)定,同一個浮點數(shù)的表示就不是惟一的。例如:0.5可以表示成0.05×101,50×10-2等。當尾數(shù)的值不為0時,其絕對值應≥0.5尾數(shù)域的最高有效位應為1要修改階碼同時左右移小數(shù)點的辦法使其變成這一要求的表示形式,這稱為浮點數(shù)的規(guī)格化表示。目前十六頁\總數(shù)二百一十五頁\編于十七點

當一個浮點數(shù)的尾數(shù)為0,不論其階碼為何值,或者當階碼的值遇到比它能表示的最小值還小時,不管其尾數(shù)為何值,計算機都把該浮點數(shù)看成零值,稱為機器零。目前十七頁\總數(shù)二百一十五頁\編于十七點

假設:

機器中的數(shù)由8位二進制數(shù)表示(包括符號位)定點機中這8位全部用來表示有效數(shù)字(包括符號)在浮點機中若階符階碼占3位,數(shù)符尾數(shù)占5位。只考慮正數(shù)值,定點機小數(shù)表示的數(shù)的范圍:

0.00000000到0.11111111

相當于十進制數(shù)的0到127/128

浮點數(shù)所能表示的數(shù)的范圍:

2-11×0.0001到211×0.1111

相當于十進制數(shù)的1/128到7.5

顯然,都用8位,

浮點機能表示的數(shù)的范圍比定點機大得多。目前十八頁\總數(shù)二百一十五頁\編于十七點

一臺計算機中采用定點表示還是浮點表示,要根據(jù)計算機的使用條件來確定。一般在高檔微機以上的計算機中同時采用定點、浮點表示,由使用者進行選擇。單片機中多采用定點表示。目前十九頁\總數(shù)二百一十五頁\編于十七點

【例1】

若浮點數(shù)X的二進制存儲格式為(41360000)16

求其32位浮點數(shù)的十進制值。解:將16進制數(shù)展開后,得二制數(shù)格式為:01000001001101100000000000000000

S階碼(8位)

M尾數(shù)(23位)指數(shù)e=階碼—127=10000010—01111111=00000011=(3)10包括隱藏位1的尾數(shù)1.M=1.01101100000000000000000=1.011011于是有

x=(—1)S×1.M×2e =+(1.011011)×23=+1011.011=(11.375)10目前二十頁\總數(shù)二百一十五頁\編于十七點【例2】

將十進制數(shù)20.59375轉換成32位浮點數(shù)的二進制格式來存儲。解:首先分別將整數(shù)和分數(shù)部分轉換成二進制數(shù):20.59375=10100.10011然后移動小數(shù)點,使其在第1,2位之間

10100.10011=1.010010011×24e=4于是:S=0,

E=4+127=131,

M=010010011得到32位浮點數(shù)的二進制存儲格式為:

01000001101001001100000000000000=(41A4C000)16目前二十一頁\總數(shù)二百一十五頁\編于十七點

3.十進制數(shù)串的表示方法

大多數(shù)通用性較強的計算機都能直接處理十進制形式表示的數(shù)據(jù)。十進制數(shù)串在計算機內有兩種表示形式:

(1)字符串形式:一個字節(jié)存放一個十進制的數(shù)位或符號位.(2)壓縮的十進制數(shù)串形式:一個字節(jié)存放兩個十進制的數(shù)位。每個數(shù)位占半個字節(jié)(4個二進制位)

目前二十二頁\總數(shù)二百一十五頁\編于十七點

用壓縮的十進制數(shù)串表示一個數(shù),要占用主存連續(xù)的多個字節(jié)。其值可用二---十編碼(BCD碼)或數(shù)字符的ASCII碼的低4位表示。符號位占半個字節(jié)并放在最低數(shù)字位之后,用12(C)表示正號,用13(D)表示負號規(guī)定數(shù)位加符號位之和必須為偶數(shù)當和不為偶數(shù)時,應在最高數(shù)字位之前補一個0。目前二十三頁\總數(shù)二百一十五頁\編于十七點

例如:123C0001001000111100012D0000000100101101

(+123)(-12)目前二十四頁\總數(shù)二百一十五頁\編于十七點

每一個小框內給出一個數(shù)值位或符號位編碼值(用十六進制形式給出).

符號位在數(shù)字位之后。要指明一個壓縮的十進制數(shù)串,要給出它在主存中的首地址和數(shù)字位個數(shù).(不含符號位),又稱位長,位長為0的數(shù)其值為0。十進制數(shù)串表示法的優(yōu)點:

位長可變,許多機器中規(guī)定該長度從0到31,有的甚至更長。目前二十五頁\總數(shù)二百一十五頁\編于十七點4.自定義數(shù)據(jù)表示在傳統(tǒng)的計算機體系結構中,用指令本身來說明操作數(shù)據(jù)的類型。定點法表示操作數(shù)是純小數(shù)或純整數(shù);浮點加法表示操作數(shù)是浮點數(shù);十進制加法表示操作數(shù)是BCD數(shù)。由于操作數(shù)據(jù)類型不同,要設三種不同的指令(操作碼)來加以區(qū)分。自定義數(shù)據(jù)表示:

用數(shù)據(jù)本身來說明數(shù)據(jù)類型。表示形式:有兩種

標志符數(shù)據(jù)表示和描述符數(shù)據(jù)表示。目前二十六頁\總數(shù)二百一十五頁\編于十七點要求對每一個數(shù)據(jù)都有附加標志符,格式如下:標志符數(shù)

據(jù)標志符指明后面的數(shù)據(jù)所具有的類型,如整數(shù),浮點數(shù)、BCD數(shù)、字符串等。標志符數(shù)據(jù)表示的優(yōu)點:

能簡化指令系統(tǒng),便于程序調試和查錯.標志符數(shù)據(jù)表示的缺點:

數(shù)據(jù)區(qū)域占用的存儲空間增加,指令執(zhí)行的速度減慢。標志符數(shù)據(jù)表示:目前二十七頁\總數(shù)二百一十五頁\編于十七點描述符數(shù)據(jù)表示

:

主要用來描述多維結構的數(shù)據(jù)類型.如向量、矩陣、記錄等。格式為:描述符標志位特征標記數(shù)據(jù)塊長度數(shù)據(jù)塊起始地址描述符標志位部分:指明這是一個數(shù)據(jù)描述符;

特征標記部分:指明數(shù)據(jù)的各種特征;

長度部分:指明數(shù)組中元素個數(shù);

起始地址部分:指明數(shù)據(jù)塊的首地址。目前二十八頁\總數(shù)二百一十五頁\編于十七點

標志符與描述符表示的區(qū)別:3點(1)標志符與每個數(shù)據(jù)相連,二者合起來存放在一個存儲單元,而描述符要和數(shù)據(jù)分開存放。(2)描述符表示中,先訪問描述符,后訪問數(shù)據(jù),至少增加一次訪存。(3)描述符是程序的一部分,而不是數(shù)據(jù)的一部分。目前二十九頁\總數(shù)二百一十五頁\編于十七點數(shù)的機器碼表示

1.問題?

計算機中對數(shù)據(jù)進行運算操作時,符號位如何表示呢?是否也同數(shù)值位一道參加運算操作呢?如參加,會給運算操作帶來什么影響呢?2.解決:把符號位和數(shù)值一起編碼來表示相應的數(shù)。如原碼、補碼、反碼、移碼等。

為了區(qū)別一般書寫表示的數(shù)和機器中這些編碼表示的數(shù),通常將前者稱為真值,后者稱為機器數(shù)或機器碼。目前三十頁\總數(shù)二百一十五頁\編于十七點1.

原碼表示法

定點小數(shù)的原碼形式為xo.x1x2…xn,原碼表示的定義:

x1>x≥0[x]原

=(2.7)

1–x=1+|x|0≥x>-1式中[x]原機器數(shù),x是真值。例如,

x=+0.1001,[x]原=0.1001x=-0.1001,[x]原=1.1001目前三十一頁\總數(shù)二百一十五頁\編于十七點

一情況情況下,對于正數(shù)x=+0.x1x2…xn,有[x]原=0.x1x2…xn對于負數(shù)x=-0.x1x2…xn,有[x]原=1.x1x2…xn對于0,原碼機器中往往有“

+0”、“

-0”之分有兩種形式:[+0]

原=0.000…0[-0]

原=1.000…0目前三十二頁\總數(shù)二百一十五頁\編于十七點定點整數(shù)的原碼形式為xox1x2…xn,原碼表示的定義:x2n>x≥0[x]原=(2.8)2n–x=2n+|x|0≥x>-2n

采用原碼表示法簡單易懂.

最大缺點:運算復雜。因為當兩數(shù)相加時,

如果是同號則數(shù)值相加;如果是異號則要進行減法。目前三十三頁\總數(shù)二百一十五頁\編于十七點

在進行減法時,要比較絕對

值的大小,然后大數(shù)減去小數(shù),最后要給結果選擇恰當?shù)姆枴榱私鉀Q這些矛盾,人們找到了補碼表示法。目前三十四頁\總數(shù)二百一十五頁\編于十七點

2.補碼表示法

以鐘表對時為例說明補碼的概念。假設:現(xiàn)在的標準時間為4點正,有一只表已經(jīng)7點了,為了校準時間,可以采用兩種方法:一是將時針退7-4=3格一是將時針向前撥12-3=9格這兩種方法都能對準到4點,減3和加9是等價的。就是說9是(-3)對12的補碼,用數(shù)學公式表示為

-3=+9(mod12)mod12的意思就是12為模數(shù),這個“?!北硎颈粊G掉的數(shù)值.上式在數(shù)學上稱為同余式。

目前三十五頁\總數(shù)二百一十五頁\編于十七點

上例中7-3和7+9(MOD12)等價,原因就是表指針超過12時,將12自動丟掉,最后得到16-12=4。同樣,以12為模時-4=+8(mod12)-5=+7(mod12)從這里得到一個啟示,就是負數(shù)用補碼表示時,可以把減法轉化為加法。這樣,在計算機中實現(xiàn)起來就比較方便。目前三十六頁\總數(shù)二百一十五頁\編于十七點

在定點小數(shù)機器中數(shù)最大不超過1

也就是負的小數(shù)對“1”的補碼是等價的。實際上,負數(shù)的符號位還有一個“1”,要把它看成數(shù)的一部分,所以要對2求補碼,也就是以2為模數(shù)。例如:X=-1

[x]補=?(mod2)[x]補=[-1]補=2+x=2+(-1)=-1.00..00目前三十七頁\總數(shù)二百一十五頁\編于十七點定點小數(shù)補碼形式xo.x1x2…xn,補碼表示的定義為:x

1>x≥0

(mod2)[x]補=2+x=2-|x|0≥x≥-1

(2.9)

式中[x]補為機器數(shù),x為真值。目前三十八頁\總數(shù)二百一十五頁\編于十七點例,x=+0.1011,[x]補=0.1011

x=-0.1011,[x]補=10+X=10.0000–0.1011=1.0101一般情況下,對于正數(shù)x=+xo.x1x2…xn[x]補=xo.x1x2…xn對于負數(shù)x=-0.x1x2…xn,

[x]補=10.00…0-0.x1x2…xn

(mod2)對于0,在補碼情況下:[+0]補

=[-0]補

=0.0000(mod2)注意:0的補碼表示只有一種形式。目前三十九頁\總數(shù)二百一十五頁\編于十七點對定點整數(shù),補碼表示的定義:x2n>x≥0(mod2n+1)[x]補=2n+1+x=2n+1-|x|0≥x>-2n(2.10)目前四十頁\總數(shù)二百一十五頁\編于十七點設[x]補=x0.x1x2```xn,求證[x/2]補=x0.x0x1x2```xn證明:因為X=-x0+

Xi2-i所以X/2=-x0/2+1/2*Xi2-i=-x0+x0/2+1/2*Xi2-i=-x0+Xi2-(i+1)由于X/2=-x0+Xi2-(i+1)根據(jù)補碼與真值的關系便有:[x/2]補=x0.x0x1x2```xn由此可見,如果要得到[2-iX]補,只要將[x]補連同符號位右移i位即可目前四十一頁\總數(shù)二百一十五頁\編于十七點

結論:采用補碼表示法進行減法運算比原碼方便多了。不論數(shù)是正不是負,機器總是做加法,減法運算可變成加法運算。但根據(jù)補碼定義,求負數(shù)的補碼要用2減去|X|。為了用加法代替減法,結果不得在求補碼時作一次減法,這顯然是不方便的。

下面介紹的反碼表示

可以解決負數(shù)的求補問題。目前四十二頁\總數(shù)二百一十五頁\編于十七點3.

反碼表示法

反碼:就是二進制數(shù)的各位數(shù)碼0變?yōu)?,1變?yōu)?.

若xi=1,反碼xi=0;若xi=0,反碼xi=1。數(shù)值上面的一橫表示反碼的意思。在計算機中用觸發(fā)器寄存數(shù)碼,若觸發(fā)器Q端輸出表示原碼,則Q端輸出就是反碼。

目前四十三頁\總數(shù)二百一十五頁\編于十七點(1)對于正數(shù)

x=+0.x1x2¨¨

xn[x]反=0.x1x2¨¨

xn(2)對于負數(shù)

x=-0.x1x2¨¨

xn[x]反=1.x1x2¨¨

xn(3)對于零,反碼有“+0”和“-0”之分

[+0]反=0.00¨¨0[+0]反=1.11¨¨1

若x的反碼形式為x0.x1x2¨¨

xn,其中x0為符號位,反碼表示的定義:

x0≤x<1

[x]反=

(2-2-n)-│x│-1<x≤0目前四十四頁\總數(shù)二百一十五頁\編于十七點比較求負數(shù)的反碼和補碼的公式:[x]反=(2-2-n)-│x│[x]補=2-│x│[x]補=[x]反+2-n

這個公式說明,求一個負數(shù)的補碼其方法是符號位置1,其余各位0變1或1變0,然后在最末位(2-n位)上加1。

目前四十五頁\總數(shù)二百一十五頁\編于十七點

當-1<x≤0

:[x]反=(2-2-n)-│x│公式推導假設x=-0.x1x2¨¨

xn│x│=0.x1x2¨¨

xn

[x]反=1.x1x2¨¨

xn

構造:│x│+[x]反=0.x1x2¨¨

xn+1.x1x2¨¨

xn

=1.111….11=2-2-n

當1.111….11+0.000…01=21.111….11=2-0.000…01=2-2-n所以:[x]反=(2-2-n)-│x│證畢目前四十六頁\總數(shù)二百一十五頁\編于十七點

從上面的討論發(fā)現(xiàn):

(1)正數(shù)的原碼、補碼和反碼具有相同的形式.即:[x]原=[x]反=[x]補=0.x1x2¨¨

xn

(2)負數(shù)的原碼,將符號位置1,數(shù)值部分不變得到;

(3)負數(shù)的補碼和反碼符號位均為1。反碼的數(shù)值部分通過將原碼的數(shù)值各位取反獲得,補碼的數(shù)值部分只需在反碼的末位加1便可得到。目前四十七頁\總數(shù)二百一十五頁\編于十七點例.以定點整數(shù)為例,用數(shù)軸形式說明原碼,反碼,補碼表示范圍和可能的數(shù)碼組合情況解:原碼,反碼,補碼表示于下圖。與原碼,反碼不同,在補碼表示中“0”只有一種形式,用補碼表示負數(shù)時的范圍可到-2n。目前四十八頁\總數(shù)二百一十五頁\編于十七點11…110…0110…00…000…0101…1-(2n-1)-10+1+(2n-1)10…011…1011…100…000…0101…1-(2n-1)-10+1+(2n-1)10…0111…100…000…0101…1-(2n-1)-10+1+(2n-1)-2n10…0原碼反碼補碼目前四十九頁\總數(shù)二百一十五頁\編于十七點門的名稱門的功能

邏輯符號(正邏輯)以T的數(shù)目表表示時間延時與非NANDT或非NORT非NOTT與AND2TABA?BAAABA·BABA+B典型門電路的邏輯符號和時間延遲(1)目前五十頁\總數(shù)二百一十五頁\編于十七點門的名稱門的功能

邏輯符號(正邏輯)以T的數(shù)目表表示時間延時或NAND2T異或NOR3T或與非NOT3T接線邏輯(與或非)ANDT+TrB典型門電路的邏輯符號和時間延遲(2)ABA○B(yǎng)+ABA○B(yǎng)?AA+BADBCAB+CD目前五十一頁\總數(shù)二百一十五頁\編于十七點4.移碼表示法移碼通常用于表示浮點數(shù)的階碼.假定:定點整數(shù)得移碼形式為xox1x2…xn移碼的定義:[x]移=2n+x,2n>x≥-2n式中[x]移為機器數(shù),x為真值。若階碼數(shù)值部分為5位,以x表示真值,則

[x]移=25+x,25>x≥-25例如,當正數(shù)x=+10101時,[x]移=1,10101

當負數(shù)x=-10101時,[x]移=25+x=25-10101

=0,01011.目前五十二頁\總數(shù)二百一十五頁\編于十七點例.將十進制真值x(-127,-1,0,+1,+127)列表表示成二進制數(shù)及原碼,反碼,補碼,移碼值。解:二進制真值x及其諸碼值列于下表,其中0在[X]原,[X]反中有兩種表示,由表中的數(shù)據(jù)可知,補碼值和移碼值差別僅在于符號位不同。

真值x(十進制)

真值x(二進制)[X]原[X]反[X]補[X]移-127-0111111111111111100000001000000100000001-1-0000000110000001111111101111111101111111000000000000000000000000000000000100000000+0000000010000000111111110000000010000000+127+0111111101111111011111110111111111111111目前五十三頁\總數(shù)二百一十五頁\編于十七點例.設機器字長16位,定點表示,尾數(shù)15位,符號一位,問:(1)定點原碼整數(shù)表示時,最大正數(shù)是多少?最小負數(shù)是多少?(2)定點原碼小數(shù)表示時,最大正數(shù)是多少?最小負數(shù)是多少?解:(1)定點原碼整數(shù)表示最大正數(shù)值=(215-1)10=(+32767)10

最小負數(shù)值=-(215-1)10=(-32767)10

011111111111111111111111111111111目前五十四頁\總數(shù)二百一十五頁\編于十七點(2)定點原碼小數(shù)表示最大正數(shù)值=(215-1)10=(+0.111…11)最小負數(shù)值=-(215-1)10=(-0.111…11

)15個1目前五十五頁\總數(shù)二百一十五頁\編于十七點

機器數(shù)的移位與舍入一.數(shù)據(jù)的移位移位可分為兩大類:邏輯移位和算數(shù)移位。在邏輯移位中,只有數(shù)碼位置的變化,無數(shù)量位置的變化。在算數(shù)移位中,應保持數(shù)據(jù)的符號位不變。

1.以原碼表示的正數(shù)移位規(guī)則

(1)左移:符號位不變,末位補0。符號位115補0左移目前五十六頁\總數(shù)二百一十五頁\編于十七點(2)右移:符號位不變,最高有效位補0,最末位右移后舍去。符號位補0115右移舍去2.以原碼表示的正數(shù)移位規(guī)則(1)左移:符號位不變,最末位補0。1符號位115左移01補0目前五十七頁\總數(shù)二百一十五頁\編于十七點

(2)右移:符號位不變,最高有效位補1。符號位115右移舍去0

3.反碼表示的移位規(guī)則

根據(jù)反碼和補碼的關系可知,反碼表示的負數(shù),左移時末位應補1,其它移位規(guī)則與補碼相同。移位后空位是補0還是補1,應根據(jù)不同的碼制來決定。但它們卻遵循一個規(guī)則:保持真值正確。目前五十八頁\總數(shù)二百一十五頁\編于十七點

十進制數(shù)的二進制編碼

二.舍入問題

1.原碼、補碼與正數(shù)反碼采取“0舍1入”、負數(shù)反碼采取“1舍0借”規(guī)則。

2.原碼與補碼采取末位“恒置1”、負數(shù)反碼采取采取末位“恒置0”規(guī)則。

用二進制數(shù)碼來表示十進制數(shù),稱為二進制編碼的十進制數(shù),簡稱BCD碼。目前五十九頁\總數(shù)二百一十五頁\編于十七點2.1.3字符與字符串

(非數(shù)值數(shù)據(jù))的表示方法1字符的表示方法:ASCⅡ碼2漢字的表示方法數(shù)字編碼方法字形編碼方法拼音編碼方法喑形結合編碼方法目前六十頁\總數(shù)二百一十五頁\編于十七點數(shù)據(jù)信息的校驗

奇偶校驗

奇偶校驗,只具有發(fā)現(xiàn)一串二進制代碼中,同時出現(xiàn)奇數(shù)個代碼出錯的能力。8421碼奇校驗位取值偶校驗位取值0000000100100011010001011001010110108421碼校驗位的取值目前六十一頁\總數(shù)二百一十五頁\編于十七點例.已知下表左邊一欄有5個字節(jié)的數(shù)據(jù),請分別用奇校驗和偶校驗進行編碼,填在中間一欄和右邊一欄數(shù)據(jù)偶校驗編碼C奇校驗編碼C1010101010101010010101010101010100010101001010101000000000000000000000000000010111111101111111101111111011111111111111110111111111目前六十二頁\總數(shù)二百一十五頁\編于十七點校驗碼最簡單且應用最廣泛的檢錯碼是采用一位校驗位的奇校驗或偶校驗。設X=(x0x1…xn-1)是一個n位字,則奇校驗位C定義為C=x0+x1+…+xn-1式中+代表位加,表明只有當X中包含奇數(shù)個1時,才能使C=1,即C=0。同理,偶校驗位C定義為

C=x0+x1+…+xn-1表明只有當X中包含偶數(shù)個1時,才能使C=0?!稹稹稹稹稹稹鹉壳傲揬總數(shù)二百一十五頁\編于十七點下面以偶校驗為例來討論在計算機中的實現(xiàn)。圖中左半部為校驗位的產生電路,右半部分是校驗電路。

P=b1b2b3b4b5b6b7b8=1=1=1=112781278p=1=1=1P*源部件目的部件偶校驗邏輯示意圖目前六十四頁\總數(shù)二百一十五頁\編于十七點2.2定點加法,減法運算2.2.1補碼加法補碼加法公式是[x]補+[y]補=[x+y]補(mod2)現(xiàn)在分四種情況來證明。假設采用定點小數(shù)表示,因此證明的先決條件是|x|<1,|y|<1,|x+y|<1.(1)x>0,y>0,則x+y>0

相加兩數(shù)都是正數(shù),故其和也一定是正數(shù)。正數(shù)的補碼和原碼是一樣的,根據(jù)數(shù)據(jù)補碼定義可得:[x]補+[y]補=x+y=[x+y]補(mod2)目前六十五頁\總數(shù)二百一十五頁\編于十七點(2)x>0,y<0,則x+y>0

相加的兩數(shù)一個為正,一個為負,因此相加結果有正,負兩種可能。根據(jù)補碼定義,因為

[x]補=x,[y]補=2+y所以[x]補+[y]補=x+2+y=2+(x+y)當x+y>0時,2+(x+y)>2,進位2必丟失,因為(x+y)>0,所以

[x]補+[y]補=x+y=[x+y]補(mod2)當x+y<0時,2+(x+y)<2,因為(x+y)<0,所以

[x]補+[y]補=2+x+y=[x+y]補(mod2)目前六十六頁\總數(shù)二百一十五頁\編于十七點(3)x<0,y>

0,則x+y>0或

x+y<0

這種情況和第2種情況一樣,把x和y的位置對調即得證(4)x<0,y<

0,x+y<0

相加兩數(shù)都是負數(shù),其和也一定是負數(shù)。因為[x]補=x+2,[y]補=y(tǒng)+2

所以[x]補+[y]補=2+x+2+y=2+(2+x+y)

又(2+x+y)一定是小于2而大于1的數(shù),進位2必丟失,所以

[x]補+[y]補=2+x+y=[x+y]補(mod2)目前六十七頁\總數(shù)二百一十五頁\編于十七點例.x=0.1001,y=0.0101,求x+y 解:[x]補=0.1001,[y]補=

0.0101[x]補

0.1001 [y]補

0.0101[x+y]補0.1110所以x+y=+0.1110+目前六十八頁\總數(shù)二百一十五頁\編于十七點例.x=+0.1011,y=-0.0101,求x+y 解:[x]補=0.1001,[y]補=

0.0101[x]補

0.1001 [y]補

0.0101[x+y]補1

0.1110所以x+y=0.0110+目前六十九頁\總數(shù)二百一十五頁\編于十七點總結:由以上兩例看到,補碼加法的特點:一.符號位要作為數(shù)的一部分一起參加算二.要在模2的意義下相加,超過2的進位要丟掉.目前七十頁\總數(shù)二百一十五頁\編于十七點2.2.2補碼減法數(shù)用補碼表示的時候,減法運算的公式是[x-y]補=[x]補-[y]補=[x]補+[-y]補只要證明[-y]補=-[y]補,上式即得證。證明如下:因為[x]補+[y]補=[x+y]補(mod2)所以[y]補=[x+y]補-[x]補(1)又[x-y]補=[x+(-)y]補=

[x]補+[-y]補所以

[-y]補=[x-y]補-[x]補(2)

目前七十一頁\總數(shù)二百一十五頁\編于十七點(1),(2)兩式相加,得:

[y]補+[-y]補=[x+y]補-[x]補+[x-y]補-[x]補

=

[x+y+x-y]補-[x]補-[x]補

=

[x+x]補-[x]補-[x]補故[-y]補=

-[y]補從[y]補求[-y]補的法則是:對[y]補包括符號位“求反且最末位加1”,得到[-y]補

寫成運算表達式為:[-y]補=?[y]補+2-n符號?表示對[y]補做包括符號位在內的求反操作,

2-n表示最末尾加1。目前七十二頁\總數(shù)二百一十五頁\編于十七點例.已知x1=-0.1110,x2=+0.1101,

求[x1]補

[-x1]補,[x2]補,[-x2]補解:[x1]補=1.0010[-x1]補=

[x1]補+2-4=0.1101+0.0001

=0.1110[x2]補=0.1101[-x2]補=?

[x2]補+2-4=1.0010+0.0001

=1.0011目前七十三頁\總數(shù)二百一十五頁\編于十七點例.已知x=+0.1101,y=+0.0110,求x-y解:[x]補=0.1101[y]補=0.0001[-y]補=1.1010[x]補0.1101

+[-y]補

0.1010

[x-y]補1

0.0111

所以x-y=+0.0111目前七十四頁\總數(shù)二百一十五頁\編于十七點2.2.3溢出概念與檢測方法在定點小數(shù)機器中,數(shù)的表示范圍為|x|<1。在運算過程中如出現(xiàn)大于1的現(xiàn)象,稱為溢出。在定點機中,正常情況下溢出是不允許的。例x=+0.1011,y=+0.1100,求x+y。解:[x]補=0.1011,[y]補=0.1001

[x]補

0.1011

+[y]補0.1001

[x+y]補1.0100兩個正數(shù)相加的結果成為負數(shù),顯然是錯誤的.目前七十五頁\總數(shù)二百一十五頁\編于十七點之所以發(fā)生這樣的錯誤,是因為運算結果產生了溢出。兩個正數(shù)相加,結果大于機器所能表示的最大正數(shù),稱為上溢。兩個負數(shù)相加,結果小于機器所能表示的最小負數(shù),稱為下溢。目前七十六頁\總數(shù)二百一十五頁\編于十七點為了判斷溢出是否發(fā)生,可以采用兩種檢測方法。第一種方法是采用雙符號法,這稱為“變形補碼”或“模4補碼”,可使模2補碼所能表示的數(shù)的范圍擴大一倍。數(shù)的變形補碼定義為:x2>x>0[x]補=(mod4)4+x0>x>-2或用同余式表示為:[x]補=4+x目前七十七頁\總數(shù)二百一十五頁\編于十七點下式同樣成立

[x]補+[y]補=[x+y]補(mod4)

為了得到兩數(shù)變形補碼之和等于兩數(shù)和的變形補碼,必須:(1)兩個符號位都看作數(shù)碼一樣參加運算(2)兩數(shù)進行以4為模的加法,最高位上產生的進位要丟掉.目前七十八頁\總數(shù)二百一十五頁\編于十七點例x=+0.01100,y=+0.1000,求x+y

解:[x]補=00.1100,[y]補=00.1000

[x]補

00.1100

+[y]補00.100001.0100兩個符號位出現(xiàn)“01”,表示已經(jīng)溢出,結果大于+1目前七十九頁\總數(shù)二百一十五頁\編于十七點例x=-0.1100,y=-0.1000,求x+y。解:[x]補=11.0100,[y]補=11.1000

[x]補

11.0100

+[y]補11.100010.1100兩個符號位出現(xiàn)“10”,表示已經(jīng)溢出,結果大于-1目前八十頁\總數(shù)二百一十五頁\編于十七點得出如下結論:(1)以模4補碼運算,運算結果的二符號位相異時,表示溢出;相同時,表示未溢出。(2)模4補碼相加的結果,不論溢出與否,最高符號始終指示正確的符號。第二種溢出檢測方法是采用單符號法。最高有效位產生進位而符號位無進位,產生上溢;最高有效位無進位而符號位有進位,產生下溢目前八十一頁\總數(shù)二百一十五頁\編于十七點補充:定點加、減法運算

補碼加、減法運算ADDSUB(+A)+(+B)=(+A)-(-B)(-A)+(-B)=(-A)-(+B)(+A)+(-B)=(+A)-(+B)(-A)+(+B)=(-A)-(-B)

同號相加異號相加目前八十二頁\總數(shù)二百一十五頁\編于十七點同號相加:操作數(shù)的絕對值相加,結果取被加(減)數(shù)的符號.異號相加:操作數(shù)的絕對值相減,符號位單獨處理.目前八十三頁\總數(shù)二百一十五頁\編于十七點操作數(shù)與結果用原碼表示尾數(shù)參加運算,符號單獨處理同號相加?尾數(shù)直接相加,結果與操作數(shù)同號正數(shù)取原碼,負數(shù)取反碼,尾數(shù)相加NY最高位有進位?將結果變反,結果為負在結果低位加1結果為正NY2、算法流程目前八十四頁\總數(shù)二百一十五頁\編于十七點1、基本關系式

x補+y補=(x+y)補(1)x補+(-y)補=

(x-y)補

(2)(1)式表示:操作碼為ADD時,兩數(shù)直接相加。例:設某機字長連符號位在內共5位求X補+Y補一、補碼加、減法運算基礎目前八十五頁\總數(shù)二百一十五頁\編于十七點①x=0.1010,y=0.0101x補=0.1010,y補=0.0101

0.1010+)0.01010.1111(x+y)補=0.1111(x+y)補=x補+y補③x=–0.1010,y=–0.0101x補=1.0110,y補=1.10111.0110+)1.10111.0001(x+y)補=1.0001(x+y)補=x補+y補1②x=0.1011,y=-0.1010x補=0.1011,y補=1.0110

0.1011+)1.01100.0001(x+y)補=0.0001(x+y)補=x補+y補1④x=-0.1010,y=0.0101x補=1.0110,y補=0.01011.0110+)0.01011.1011(x+y)補=1.1011(x+y)補=x補+y補目前八十六頁\總數(shù)二百一十五頁\編于十七點(x-y)補=x補+(-y)補

(2)式(2)表示:操作碼為SUB時,將減數(shù)補碼(y補)連同減號一起變補后,與被減數(shù)(x補)相加.x=4=+0100,y=-5=-0101x補=00100,y補=11011,

(-y)補=

0010100100+)0010101001(x

-y)補=1001補=01001(x

-y)補=x補+(-y)補例:設某機字長連同符號在內共5位,求x補-y補x=-4=-0100,y=5=+0101x補=11100,y補=00101,

(-y)補=1101111100+)1101110111(x

-y)補=

(-1001)補=10111(x

-y)補=x補+(

-y)補1目前八十七頁\總數(shù)二百一十五頁\編于十七點操作數(shù)用補碼表示,符號位參與運算x補+y補x補+(-y)補ADDSUB結果為補碼表示,符號位指示結果正負2、算法流程目前八十八頁\總數(shù)二百一十五頁\編于十七點1、什么是溢出

某機器字長連符號共n+1位,用補碼表示,其定點整數(shù)補碼的表示范圍為-2n--2n-1,如果運算結果超過這個范圍就為溢出。2、如何判斷溢出

設:操作數(shù)A有4位尾數(shù),1位符號位SA,補碼表示。操作數(shù)B有4位尾數(shù),1位符號位SB,補碼表示。運算結果的符號位為Sf

尾數(shù)最高位進位為C,

符號位進位Cf

二、溢出判斷目前八十九頁\總數(shù)二百一十五頁\編于十七點、硬件判斷邏輯一(用Cf與C的關系判斷)溢出=Cf

C.硬件判斷邏輯二(操作數(shù)的符號與結果符號的關系)溢出=SASBSf+SASBSf3、變形補碼判溢出設:第一符號位和第二符號位分別是Sf1、Sf2

00—結果為正,無溢出溢出=Sf1Sf201—結果為正溢

10—結果負溢

11—結果為負,無溢出目前九十頁\總數(shù)二百一十五頁\編于十七點2.2.4基本的二進制加法/減法器一位全加器真值表AiBiCiSiCi+10000000110010100110110010101011100111111目前九十一頁\總數(shù)二百一十五頁\編于十七點補碼加、減法的邏輯實現(xiàn)c001n-2n-1…x0xn-1xn-2x1y0y1yn-2yn-2c0c1c2cn-2cn-1cnVSn-1Sn-2S1S0PP=0:加法P=1:減法V:溢出指示目前九十二頁\總數(shù)二百一十五頁\編于十七點行波進位的補碼加法M=0加M=1減FAFAFAFA………………溢出CnCn-1Cn-2C2C1Sn-1Sn-2S1S0Bn-1Bn-2B1B0An-1An-2A1A0

方式控制M????目前九十三頁\總數(shù)二百一十五頁\編于十七點由真值表可以得到Si=Ai+Bi+CiCi+1=AiBi+BiCi+CiAi????Ci+1SiAiBiCi全加器目前九十四頁\總數(shù)二百一十五頁\編于十七點2.2.5十進制加法器一位BCD加法器單元一位BCD加法器單元一位BCD加法器單元Cn-1CnC2C1C0Sn-1S1S0444444Xn-1Yn-1X0X1Y1Y0N位數(shù)字的行波進位BCD加法器目前九十五頁\總數(shù)二百一十五頁\編于十七點+++++++Ci+1Ci,+1Si3,Si3Si2Si1Si0CiSi2,Si2,Si2,Xi3Xi2Xi1Xi0Yi3,Yi2Yi1Yi0??????一位BCD加法器單元的邏輯結構目前九十六頁\總數(shù)二百一十五頁\編于十七點2.3.1原碼一位乘法1.算法分析1)手算:例:x原=0.1101,y原=1.1011|P|=|x||y|(符號位單獨處理)0.1101×0.1011110111010000+)11010.10001111上符號位:1.100011112.3定點乘法運算目前九十七頁\總數(shù)二百一十五頁\編于十七點2)手算算法的演變:每次用一位乘數(shù)所對應的部分積與原部分積相加,并右移寄存器R0:部分積累加和,乘積的高位寄存器R1:被乘數(shù)寄存器R2:乘數(shù),乘積的低位

Pf=XfYf+│P│=│X│·│Y│改進:1.一次性求和變?yōu)槔奂印?.每次左移一位改為右移一位。3.乘積是操作數(shù)字長的兩倍。目前九十八頁\總數(shù)二百一十五頁\編于十七點原碼一位乘法的運算方法:

1.乘法開始前令部分積的初值P0=02.對乘數(shù)末位yn進行判斷:

yn=1+Xyn=0+03.位積加上部分積=新的部分積

4.相加的結果右移一位就可得新的部分積,直到最后積為2n停止。目前九十九頁\總數(shù)二百一十五頁\編于十七點2.算法流程yn=1?i=n?0i,0PiPi+xPiPixfyfPfynynPi+0Pi

Pii+1i目前一百頁\總數(shù)二百一十五頁\編于十七點00.0000yf.1011P0=0+00.1101y4=1,+x00.110100.01101yf.101

右移一位,得P1

+00.1101y3=1,+x01.001100.100111yf.10

右移一位,得P2+00.0000y2=0,+000.100100.0100111yf.1

右移一位,得P3+00.1101y1=1,+x01.000100.10001111yf

右移一位得P4=|x|·|y|例1x=0.1101,y=-0.1011,求x原

·y原

部分積乘數(shù)判斷位說明目前一百零一頁\總數(shù)二百一十五頁\編于十七點可見:(1)n位數(shù)參加運算要做n次相加和移位操作,在計算機中可利用計數(shù)器予以控制。(2)用相加和移位操作實現(xiàn)了乘法運算。由于所以目前一百零二頁\總數(shù)二百一十五頁\編于十七點二、原碼一位乘法的邏輯實現(xiàn)Pfyfxf結束R0R1ynR2yn部分積乘數(shù)y被乘數(shù)x計數(shù)器iFSR+1T啟動移位信號原碼一位乘法邏輯結構圖目前一百零三頁\總數(shù)二百一十五頁\編于十七點控制信號啟動:使計數(shù)器及R0清0,F(xiàn)置1。T:乘法時序脈沖。運算過程:

T1到來,R0,R1中的數(shù)據(jù)右移一位形成P1,計數(shù)器加1,如此重復直到i=n。F置零。乘積的高n位在R0中,低n位在R1中。目前一百零四頁\總數(shù)二百一十五頁\編于十七點2.3.2補碼一位乘法算法分析1).被乘數(shù)X的符號位任意,并以補碼表示,乘數(shù)Y為正設:X補=X0.X1X2XnY補=0

.y1y2yn

X補=2+X或2n+1+X(mod2,mod2n+1)Y補=Y2Y+XYX補

Y補=2n+1Y+XY=2(0.Y1Y2Yn)+XY2n+1(Y1Y2Yn)+XY目前一百零五頁\總數(shù)二百一十五頁\編于十七點

2(0.Y1Y2Yn)=2(MOD2)2n+1(0.Y1Y2Yn)=2N+1(M

溫馨提示

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

評論

0/150

提交評論