第2章 數據的機器層次表示_第1頁
第2章 數據的機器層次表示_第2頁
第2章 數據的機器層次表示_第3頁
第2章 數據的機器層次表示_第4頁
第2章 數據的機器層次表示_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章數據的機器層次表示9/18/20231注意備注第2章數據是計算機加工和處理的對象,數據在計算機內如何表示將直接影響到計算機的結構和性能。本章主要介紹無符號數和帶符號數的表示方法、數的定點與浮點表示方法、字符和漢字的編碼方法、數據校驗碼等。熟悉和掌握本章的內容,是學習計算機原理的最基本要求。

9/18/202322.1數值數據的表示2.1.1計算機中的數值數據在計算機課本中常用后綴字母來表示不同的數制。十進制數(D)

二進制數(B)

八進制數(Q)

十六進制數(H)

在C語言中,八進制常數以前綴0開始,十六進制常數以前綴0x開始。9/18/202332.1數值數據的表示2.1.2無符號數和帶符號數所謂無符號數,就是整個機器字長的全部二進制位均表示數值位(沒有符號位),相當于數的絕對值。

N1=01001

表示無符號數9

N2=11001

表示無符號數259/18/202342.1數值數據的表示對于字長為n+1位的無符號數的表示范圍是0~(2n+1-1)。

例如:字長為8位,無符號數的表示范圍是0~255。00000000111111119/18/20235注意備注2.1數值數據的表示所謂帶符號數,即正、負數。在日常生活中,我們用“+”、“-”號加絕對值來表示數值的大小,用這種形式表示的數值在計算機技術中稱為“真值”。

對于數的符號“+”或“-”,計算機是無法識別的,因此需要把數的符號數碼化。通常,約定二進制數的最高位為符號位,“0”表示正號,“1”表示負號。這種在計算機中使用的表示數的形式稱為機器數。9/18/20236注意備注2.1數值數據的表示對于帶符號數,最高位用來表示符號位,而不再表示數值位了,前例中的N1、N2在這里變?yōu)椋?/p>

N1=01001

表示帶符號數+9

N2=11001

根據不同的機器數表示不同的值,如:

原碼時表示帶符號數-9,

補碼則表示-7,

反碼則表示-6。9/18/20237注意備注2.1數值數據的表示2.1.3原碼表示法原碼表示法是一種最簡單的機器數表示法,用最高位表示符號位,符號位為“0”表示該數為正,符號位為“1”表示該數為負,數值部分與真值相同。若真值為純小數,它的原碼形式為Xs.X1X2…Xn,其中Xs表示符號位。例1:X1=0.0110,X2=-0.0110[X1]原=0.0110,[X2]原=1.01109/18/20238注意備注2.1數值數據的表示若真值為純整數,它的原碼形式為XsX1X2…Xn,其中Xs表示符號位。例2:X1=1101,X2=-1101[X1]原=0,1101,[X2]原=1,1101

在原碼表示中,真值0有兩種不同的表示形式:

[+0]原

=00000[-0]原

=10000注意9/18/202392.1數值數據的表示原碼表示法的優(yōu)點是直觀易懂,機器數和真值間的相互轉換很容易,用原碼實現乘、除運算的規(guī)則很簡單;缺點是實現加、減運算的規(guī)則較復雜。9/18/2023102.1數值數據的表示2.1.4補碼表示法

為了克服原碼在加、減運算中的缺點,引入了補碼表示法,補碼表示法的設想是:使符號位參加運算,從而簡化加減法的規(guī)則;使減法運算轉化成加法運算,從而簡化機器的運算器電路。1.模和同余

由于設備的原因,機器數是有字長限制的,不可能容納無限大的任意數。當運算結果超出了機器的最大表示范圍,就會發(fā)生溢出(丟失進位),此時所產生的溢出量稱為模,用字母M表示。9/18/202311000024232221202.1數值數據的表示

模實際上是一個計量器的容量。例如:一個4位的計數器,它的計數值為0~15,當計數器計滿15之后再加1,這個計數器就發(fā)生溢出,其溢出量為16,也就是模等于16。00010010001101000101011001111000100110101011110011011110111100001丟失一個字長為n+1位的純整數的溢出量為2n+1,即以2n+1為模。一個純小數的溢出量為2,即以2為模。9/18/2023122.1數值數據的表示同余概念:即兩整數A、B除以同一正整數M,所得余數相同,則稱A、B對模M同余。

A=B(modM),如23=13(mod10)

對鐘表而言,M=12。假設:時鐘停在8點,而現在正確的時間是6點,這時撥準時鐘的方法有兩種:分針倒著旋轉2圈,等于分針正著旋轉10圈。故有:-2=10(mod12),即-2和10同余。倒撥正撥9/18/2023132.1數值數據的表示

8-2=8+10(mod12)

可見,只要確定了“?!?,就可找到一個與負數等價的正數(該正數即為負數的補數)來代替此負數,而這個正數可以用模加上負數本身求得,這樣就可把減法運算用加法實現了。

9-5=9+(-5)=9+(12-5)=9+7=4(mod12)65-25=65+(-25)=65+(100-25)=65+75=40(mod100)

將補數的概念用到計算機中,便出現了補碼這種機器數。9/18/2023142.1數值數據的表示2.補碼表示補碼的符號位表示方法與原碼相同,其數值部分的表示與數的符號有關:對于正數,數值部分與真值形式相同;對于負數,其數值部分為真值形式按位取反,且在最低位加1。若真值為純小數,它的補碼形式為Xs.X1X2…Xn,其中Xs表示符號位。例1:X1=0.0110,X2=-0.0110

[X1]補=0.0110,[X2]補=1.10109/18/2023152.1數值數據的表示若真值為純整數,它的補碼形式為XsX1X2…Xn,其中Xs表示符號位。例2:X1=1101,X2=-1101

[X1]補=0,1101,[X2]補=1,0011

在補碼表示中,真值0的表示形式是唯一的。

[+0]補=[-0]補=00000注意9/18/202316注意備注2.1數值數據的表示3.由真值、原碼轉換為補碼當X為正數時,[X]補=[X]原=X。當X為負數時,由[X]原轉換為[X]補有兩種方法:

①[X]原除掉符號位外的各位取反加“1”。

②自低位向高位,尾數的第一個“1”及其右部的“0”保持不變,左部的各位取反,符號位保持不變。例如:[X]原

=1.1110011000[X]補

=1.0001101000不變不變變反9/18/202317注意備注2.1數值數據的表示2.1.5反碼表示法反碼的符號位表示方法與原碼相同,但其數值部分的表示與數的符號有關:對于正數,數值部分與真值形式相同;對于負數,數值部分為真值形式按位取反。若真值為純小數,它的反碼形式為Xs.X1X2…Xn,其中Xs表示符號位。

例1:X1=0.0110,X2=-0.0110[X1]反=0.0110,[X2]反=1.10019/18/2023182.1數值數據的表示若真值為純整數,它的反碼形式為XsX1X2…Xn,其中Xs表示符號位。例2:X1=1101,X2=-1101[X1]反=0,1101,[X2]反=1,0010

在反碼表示中,真值0也有兩種不同的表示形式:

[+0]反=00000[-0]反=11111注意9/18/2023192.1數值數據的表示2.1.63種機器數的比較

⑴對于正數它們都等于真值本身,而對于負數各有不同的表示。

⑵最高位都表示符號位,補碼和反碼的符號位可和數值位一起參加運算;但原碼的符號位必須分開進行處理。9/18/2023202.1數值數據的表示

⑶對于真值0,原碼和反碼各有兩種不同的表示形式,而補碼只有唯一的一種表示形式。

⑷原碼、反碼表示的正、負數范圍是對稱的;但補碼負數能多表示一個最負的數(絕對值最大的負數),其值等于-2n(純整數)或-1(純小數)。注意9/18/2023212.1數值數據的表示設機器字長4位(含1位符號位),以純整數為例:原碼或反碼可表示的數補碼可表示的數(多表示一個負數)0+1+2+3+4+5+6+7-1-2-3-4-5-6-7+0-07個正數7個負數0+1+2+3+4+5+6+7-1-2-3-4-5-6-7-87個正數8個負數-89/18/2023222.1數值數據的表示真值與3種機器數間的對照100010001000-8-8-8100010001000-0-0-0100010001000-7-7-79/18/2023232.1數值數據的表示

如果已知機器的字長,則機器數的位數應補夠相應的位。設機器字長為8位,則:

X1=1011X2=-1011[X1]原=0,0001011[X2]原=1,0001011[X1]補=0,0001011[X2]補=1,1110101[X1]反=0,0001011[X2]反=1,1110100

X1=0.1011X2=-0.1011

[X1]原=0.1011000[X2]原=1.1011000[X1]補=0.1011000[X2]補=1.0101000[X1]反=0.1011000[X2]反=1.01001119/18/202324注意備注2.2機器數的定點表示與浮點表示

2.2.1定點表示法

在定點表示法中約定:所有數據的小數點位置固定不變。通常,把小數點固定在有效數位的最前面或末尾,這就形成了兩類定點數。1.定點小數小數點的位置固定在最高有效數位之前,符號位之后,記作Xs.X1X2…Xn,這個數是一個純小數。定點小數的小數點位置是隱含約定的,小數點并不需要真正地占據一個二進制位。9/18/202325注意備注

202-12-2…

2-(n-1)2-n2.2機器數的定點表示與浮點表示

當Xs=0,X1~Xn=1時,X為最大正數,即:X最大正數

=(1-2-n)。1最大正數…1110定點小數格式小數點位置XsX1XnX2Xn-1…202-12-2…

2-(n-1)2-n注意9/18/202326注意備注

202-12-2…

2-(n-1)2-n2.2機器數的定點表示與浮點表示

最小正數00100…定點小數格式小數點位置XsX1XnX2Xn-1…202-12-2…

2-(n-1)2-n當Xn=1,Xs~Xn-1=0時,X為最小正數,即:X最小正數

=2-n。注意9/18/2023272.2機器數的定點表示與浮點表示

當Xs=1,表示X為負數,此時情況要稍微復雜一些,這是因為在計算機中帶符號數可用補碼表示,也可用原碼表示。如前所述,原碼與補碼所能表示的絕對值最大的負數是有區(qū)別的,所以原碼和補碼的表示范圍有一些差別。9/18/202328

202-12-2…

2-(n-1)2-n

202-12-2…

2-(n-1)2-n2.2機器數的定點表示與浮點表示

原碼表示的絕對值最大負數11111…

X絕對值最大負數(原碼表示時)=-(1-2-n)補碼表示的絕對值最大負數10000…X絕對值最大負數(補碼表示時)=-1注意9/18/202329綜上所述:若機器字長有n+1位,則:原碼定點小數表示范圍為:-(1-2-n)~(1-2-n)補碼定點小數表示范圍為:-1~(1-2-n)

若機器字長有8位,則:原碼定點小數表示范圍為:-(1-2-7)~(1-2-7)補碼定點小數表示范圍為:-1~(1-2-7)2.2機器數的定點表示與浮點表示

9/18/202330注意備注2n2n-12n-2…

21202.2機器數的定點表示與浮點表示2.定點整數小數點位置隱含固定在最低有效數位之后,記作XsX1X2…Xn,這個數是一個純整數。定點整數格式小數點位置XsX1XnX2…2n2n-12n-2…

201最大正數…1110X最大正數

=(2n-1)注意9/18/2023312n2n-12n-2…

21202n2n-12n-2…

21202n2n-12n-2…

21202.2機器數的定點表示與浮點表示X絕對值最大負數(原碼表示時)=-(2n-1)最小正數00100…X最小正數

=1X絕對值最大負數(補碼表示時)=-2n原碼表示的絕對值最大負數11111…補碼表示的絕對值最大負數10000…注意注意9/18/202332綜上所述:若機器字長有n+1位,則:原碼定點整數的表示范圍為:-(2n-1)~(2n-1)補碼定點整數的表示范圍為:-2n~(2n-1)

若機器字長有8位,則:原碼定點整數表示范圍為:-127~127補碼定點整數表示范圍為:-128~1272.2機器數的定點表示與浮點表示

9/18/202333注意備注2.2機器數的定點表示與浮點表示2.2.2浮點表示法

小數點的位置根據需要而浮動,這就是浮點數。例如:N=M×rE

式中:r為浮點數階碼的底,與尾數的基數相同,通常r=2。E和M都是帶符號數,E叫做階碼,M叫做尾數。在大多數計算機中,尾數為純小數,常用原碼或補碼表示;階碼為純整數,常用移碼或補碼表示。=M×2E9/18/202334注意備注2.2機器數的定點表示與浮點表示

浮點數的一般格式:

浮點數的底是隱含的,在整個機器數中不出現。階碼的符號位為es,階碼的大小反映了在數N中小數點的實際位置;尾數的符號位為ms,它是整個浮點數的符號位,反映了該浮點數的正負。假設階碼和尾數部分均用補碼表示。esemms階碼部分E尾數部分MK位N位

1位1位9/18/202335階碼部分E尾數部分Mesms

2-1…

2-(n-1)2-n2k-1…

202.2機器數的定點表示與浮點表示0011111……1.浮點數的表示范圍當es=0,ms=0,階碼和尾數的數值位各位全為1(即階碼和尾數都為最大正數)時,該浮點數為最大正數。X最大正數=(1-2-n)×22k-1注意9/18/202336注意備注階碼部分E尾數部分Mesms

2-1…

2-(n-1)2-n2k-1…

202.2機器數的定點表示與浮點表示

當es=1,ms=0,尾數的最低位mn=1,其余各位為0(即階碼為絕對值最大負數,尾數為最小正數)時,該浮點數為最小正數。1100000……X最小正數=2-n×2-2k注意9/18/202337注意備注階碼部分E尾數部分Mesms

2-1…

2-(n-1)2-n2k-1…

202.2機器數的定點表示與浮點表示

當es=0,階碼的數值位為全1;ms=1,尾數的數值位為全0(即階碼為最大正數,尾數為絕對值最大的負數)時,該浮點數為絕對值最大負數。

1110000……X絕對值最大負數=-1×22k-1注意9/18/202338注意備注2.2機器數的定點表示與浮點表示

2.規(guī)格化的浮點數為了提高運算的精度,需要充分地利用尾數的有效數位,通常采取規(guī)格化的浮點數形式,即規(guī)定尾數的最高數位必須是一個有效值。

1/r≤|M|<1

如果r=2,則有1/2≤|M|<1。

9/18/202339注意備注2.2機器數的定點表示與浮點表示在尾數用原碼表示時,規(guī)格化浮點數的尾數的最高數位總等于1。在尾數用補碼表示時,規(guī)格化浮點數應滿足尾數最高數位與符號位不同(ms⊕m1=1),即當1/2≤M<1時,應有0.1xx…x形式,當-1≤M<-1/2時,應有1.0xx…x形式。需要注意的是當M=-1/2,對于原碼來說,是規(guī)格化數,而對于補碼來說,不是規(guī)格化數;當M=-1時,對于原碼來說,這將無法表示,而對于補碼來說,這是一個規(guī)格化數。

9/18/202340階碼部分E尾數部分Mesms

2-1…

2-(n-1)2-n2k-1…

20階碼部分E尾數部分Mesms

2-1…

2-(n-1)2-n2k-1…

202.2機器數的定點表示與浮點表示

X規(guī)格化的最小正數=2-1×2-2k00011111……

X規(guī)格化的絕對值最小負數=-(2-1+2-n)×2-2k……01000100注意注意9/18/202341注意備注2.2機器數的定點表示與浮點表示

9/18/202342備注2.2機器數的定點表示與浮點表示

2.2.3浮點數階碼的移碼表示法

移碼就是在真值X上加一個常數(偏置值),相當于X在數軸上向正方向平移了一段距離,這就是“移碼”一詞的來由,移碼也可稱為增碼或偏碼。

[X]移=偏置值+X

字長n+1位定點整數的移碼形式為X0X1X2…Xn。9/18/2023432.2機器數的定點表示與浮點表示

最常見的移碼的偏置值為2n。當字長8位時,偏置值為27。

例1:X=1011101[X]移=27+X=10000000+1011101=11011101[X]補=01011101例2:X=-1011101[X]移=27+X=10000000-1011101=00100011[X]補=101000119/18/202344

2.2機器數的定點表示與浮點表示9/18/202345

2.2機器數的定點表示與浮點表示偏置值為2n的移碼具有以下特點:

⑴在移碼中,最高位為“0”表示負數,最高位為“1”表示正數。

⑵移碼為全0時,它所對應的真值最小,為全1時,它所對應的真值最大。

⑶真值0在移碼中的表示形式是唯一的,即[+0]移=[-0]移=100…0。

⑷移碼把真值映射到一個正數域,所以可將移碼視為無符號數,直接按無符號數規(guī)則比較大小。9/18/202346

2.2機器數的定點表示與浮點表示

⑸同一數值的移碼和補碼除最高位相反外,其他各位相同。浮點數的階碼常采用移碼表示最主要的原因有:便于比較浮點數的大小。階碼大的,其對應的真值就大,階碼小的,對應的真值就小。簡化機器中的判零電路。當階碼全為0,尾數也全為0時,表示機器零。注意9/18/2023472.2機器數的定點表示與浮點表示

2.2.4定點/浮點表示法與定點/浮點計算機1.

定點/浮點表示法的區(qū)別假設定點數和浮點數的字長相同。

(1)數值的表示范圍浮點表示法所能表示的數值范圍將遠遠大于定點數。9/18/2023482.2機器數的定點表示與浮點表示

應當注意的有兩點:不管定點數還是浮點數,每個數值都對應于數軸上的一個點。所謂數的表示范圍實際上指的只是數的上、下限,它們之間是一些不連續(xù)的點,而不是一段連續(xù)的區(qū)間。對于定點數而言,各個點在數軸上的分布是均勻的;而對于浮點數而言,各個點在數軸上的分布是不均勻的,越靠近數軸的原點,兩個相鄰數之間的距離就越近。9/18/2023492.2機器數的定點表示與浮點表示

(2)精度浮點數雖然擴大了數的表示范圍,但這正是以降低精度為代價的,也就是數軸上各點的排列更稀疏了。9/18/202350備注2.2機器數的定點表示與浮點表示

(3)數的運算浮點運算要比定點運算復雜得多。

(4)溢出處理在定點運算時,當運算結果超出數的表示范圍,就發(fā)生溢出。而在浮點運算時,運算結果超出尾數的表示范圍卻并不一定溢出,只有當階碼超出所能表示的范圍時,才發(fā)生溢出。9/18/2023512.2機器數的定點表示與浮點表示2.定點機與浮點機并不是所有的計算機都具有浮點運算功能,通??梢苑譃閹讬n:(1)定點機以定點運算為主,浮點運算是通過軟件來實現的。(2)定點機+浮點運算部件浮點運算部件(FPU)是專門用于對浮點數進行運算的部件。(3)浮點機具有浮點運算指令和基本的浮點運算器。9/18/202352備注2.2機器數的定點表示與浮點表示

2.2.5實用浮點數舉例

大多數計算機的浮點數采用IEEE754標準,其格式如下,IEEE754標準中有三種形式的浮點數。ms

Em9/18/202353備注

2.2機器數的定點表示與浮點表示

以短浮點數為例討論浮點代碼與其真值之間的關系。最高位為數符位;其后是8位階碼,以2為底,階碼的偏置值為127;其余23位是尾數。為了使尾數部分能表示更多一位的有效值,IEEE754采用隱含尾數最高數位1(即這一位1不表示出來)的方法,因此尾數實際上是24位。應注意的是,隱含的1是一位整數(即位權為20),在浮點格式中表示出來的23位尾數是純小數,并用原碼表示。9/18/2023542.2機器數的定點表示與浮點表示

例1:將(100.25)10轉換成短浮點數格式。

十進制數→二進制數

(100.25)10=(1100100.01)2

⑵非規(guī)格化數→規(guī)格化數

1100100.01=1.10010001×26

計算移碼表示的階碼(偏置值+階碼真值)

1111111+110=10000101

以短浮點數格式存儲該數。

符號位=0

階碼=10000101

尾數=100100010000000000000009/18/2023552.2機器數的定點表示與浮點表示短浮點數代碼為

0;100

0010

1;100

1000

1000

0000

0000

0000

表示為十六進制的代碼:42C88000H。

例2:把短浮點數C1C90000H轉換成為十進制數。

十六進制→二進制形式,并分離出符號位、階碼和尾數。

C1C90000H=

1;10000011;10010010000000000000000階碼符號位尾數9/18/2023562.2機器數的定點表示與浮點表示

計算出階碼真值(移碼-偏置值)

10000011-1111111=100

以規(guī)格化二進制數形式寫出此數

1.1001001×24

寫成非規(guī)格化二進制數形式

11001.001

轉換成十進制數,并加上符號位。

(11001.001)2=(25.125)10

所以,該浮點數=-25.1259/18/2023572.3非數值數據的表示

2.3.1字符和字符串的表示方法1.ASCII字符編碼

常見的ASCII碼用七位二進制表示一個字符,它包括10個十進制數字符號(0~9)、52個英文大寫和小寫字母(A~Z,a~z)、34個專用符號和32個控制符號,共計128個字符。

在ASCII碼表中,數字和英文字母都是按順序排列的,只要知道其中一個的二進制代碼,不要查表就可以推導出其他數字或字母的二進制代碼。9/18/202358備注2.3非數值數據的表示9/18/2023592.3非數值數據的表示2.字符串的存放字符串是指一串連續(xù)的字符。例如,字符串IFX>0THENREAD(C)。⑴向量法在存儲器中占用一片連續(xù)的空間,每個字節(jié)存放一個字符代碼,字符串的所有元素(字符)在物理上是鄰接的。在字長為32位的存儲器,每一個主存單元可存放4個字符,整個字符串需5個主存單元。在每個字節(jié)中實際存放的是相應字符的ASCII碼。9/18/202360IFX>0THENREA(C)D2.3非數值數據的表示5449462020202030454541444852433E2928584E9/18/202361備注2.3非數值數據的表示⑵串表法一個存儲單元有32位,僅存放一個字符代碼。字符串的每個字符代碼后有一個鏈接字,用以指出下一個字符的存儲單元地址。串表法不要求串中的各個字符在物理上相鄰,在對字符串進行刪除和插入操作時,只需修改相應字符代碼后面的鏈接字即可。由于鏈接字占據了存儲單元的大部分空間,使得主存的有效利用率下降(只有原來的25%)。上例中整個字符串需19個主存單元。

9/18/202362備注2.3非數值數據的表示2.3.2漢字的表示1.漢字國標碼

GB2312-80,簡稱國標碼。該標準共收集常用漢字6763個,其中一級漢字3755個,按拼音排序;二級漢字3008個,按部首排序;另外還有各種圖形符號682個,共計7445個。

每個漢字、圖形符號都用兩個字節(jié)表示,每個字節(jié)只使用低七位編碼。9/18/202363備注2.3非數值數據的表示2.漢字區(qū)位碼

區(qū)位碼將漢字編碼GB2312-80中的6763個漢字分為94個區(qū),每個區(qū)中包含94個漢字(位),區(qū)和位組成一個二維數組,每個漢字在數組中對應一個唯一的區(qū)位碼。漢字的區(qū)位碼定長4位,前2位表示區(qū)號,后2位表示位號,區(qū)號和位號用十進制數表示,區(qū)號從01到94,位號也從01到94。例如,“中”字在54區(qū)的48位上,其區(qū)位碼為“54-48”,“國”字在25區(qū)的90位上,其區(qū)位碼為“25-90”。9/18/202364備注2.3非數值數據的表示漢字區(qū)位碼并不等于漢字國標碼,它們兩者之間的關系可用以下公式表示:

國標碼=區(qū)位碼(十六進制)+2020H

例如:已知漢字“春”的區(qū)位碼為“20-26”,計算它的國標碼。區(qū)位碼:

2026十進制

↓14H1AH

十六進制

+20H+20H

國標碼:

34H3AH9/18/2023652.3非數值數據的表示3.漢字機內碼

漢字可以通過不同的輸入碼輸入,但在計算機內部其內碼是唯一的。

因為漢字處理系統(tǒng)要保證中西文的兼容,當系統(tǒng)中同時存在ASCII碼和漢字國標碼時,將會產生二義性。9/18/2023662.3非數值數據的表示例如:從主存中讀出兩個字節(jié)的內容,它們分別為30H和21H,這時既可能是表示漢字“啊”的國標碼,又可能是表示西文“0”和“!”的ASCII碼。啊30210!9/18/202367備注2.3非數值數據的表示

常用的漢字機內碼為兩字節(jié)長的代碼,它是在相應漢字國標碼的每個字節(jié)最高位上加“1”。即:

漢字機內碼=漢字國標碼+8080H

例如,上述“啊”字的國標碼是3021H,其漢字機內碼則是B0A1H。3021+8080B0A19/18/2023682.3非數值數據的表示4.漢字字形碼

漢字字形碼是指確定一個漢字字形點陣的代碼,又叫漢字字模碼或漢字輸出碼。在一個漢字點陣中,凡筆畫所到之處,記為“1”,否則記為“0”。根據對漢字質量的不同要求,可有16×16、24×24、32×32或48×48的點陣結構。顯然點陣越大,輸出漢字的質量越高,每個漢字所占用的字節(jié)數也越多。9/18/2023692.3非數值數據的表示

5.漢字編碼的發(fā)展

1990年頒布了繁體字的編碼標準GB12345-90,目的在于規(guī)范必須使用繁體字的各種場合,該標準共收錄6866個漢字(比GB2312多103個字),純繁體的字大概有2200余個。

1995年底推出的GBK編碼是中文編碼擴展國家標準,該編碼標準兼容GB2312,共收錄漢字21003個、符號883個,并提供1894個造字碼位,簡、繁體字融于一庫。

2000年底又頒布了GB18030大字符集標準,這個標準可以涵蓋27484個漢字,繁、簡字均處于同一平臺。9/18/2023702.3非數值數據的表示2.3.3

統(tǒng)一代碼(Unicode)

隨著國際間的交流與合作的擴大,信息處理應用對字符集提出了多文種、大字量、多用途的要求,解決問題的最佳方案是設計一種全新的編碼方法,這種方法必須有足夠的能力來表示任意一種語言里使用的所有符號,這就是統(tǒng)一代碼(Unicode)。9/18/2023712.3非數值數據的表示1.編碼方式

Unicode的基本方法是用一個16位的數來表示每個符號,這種符號集可表示65536個不同的字符或符號。被稱為基本多語言平面(BMP)。這個空間已經非常大了,但設計者考慮到將來某一天它可能也會不夠用,所以采用了一種可使這種表示法使用得更遠的方法。9/18/2023722.3非數值數據的表示

當只用2字節(jié)數來表示Unicode字符時,使用的是UCS-2編碼,但盡管如此,也允許在UCS-2文本中插入一些UCS-4字符。為此,在BMP中,保留了兩個有1024個大小的塊,這兩個塊中任何位置都不能用來表示任何符號。UCS-4的兩個16位字每個表示一個數,這個數是UCS-2BMP中1024個數值中的一個。這兩個數的組合可以表示多達1百萬多個自定義的UCS-4字符。

UCS-2:65536-2×1024

UCS-4:210×210=2209/18/202373備注2.3非數值數據的表示

2.實現方式

Unicode的實現方式不同于編碼方式。一個字符的Unicode編碼是確定的,但是在實際傳輸過程中,由于不同系統(tǒng)平臺的設計不一定一致,以及出于節(jié)省空間的目的,對Unicode編碼的實現方式有所不同。Unicode的實現方式稱為Unicode轉換格式(UnicodeTranslationFormat,簡稱為UTF),目前存在的UTF格式有:UTF-7,UTF-7.5,UTF-8,UTF-16以及UTF-32。9/18/2023742.4十進制數和數串的表示2.4.1十進制數的編碼(二-十進制編碼)用四位二進制數來表示一位十進制數,稱為二進制編碼的十進制數,簡稱BCD碼。四位二進制數可以組合出16種代碼,能表示16種不同的狀態(tài),我們只需要使用其中的10種狀態(tài),就可以表示十進制數的0~9十個數碼,而其他的六種狀態(tài)為冗余狀態(tài)。由于可以取任意的10種代碼來表示十個數碼,所以就可能產生多種BCD編碼。BCD編碼既具有二進制數的形式,又保持了十進制數的特點。9/18/202375備注2.4十進制數和數串的表示

幾種常見的BCD碼十進制數8421碼2421碼余3碼Gray碼012345678900000001001000110100010101100111100010010000000100100011010010111100110111101111001101000101011001111000100110101011110000000001001100100110111010101011100110009/18/2023762.4十進制數和數串的表示1.8421碼

8421碼又稱為NBCD碼,其主要特點是:

⑴它是一種有權碼,四位二進制代碼的位權從高到低分別為8、4、2、1。

⑵簡單直觀。每個代碼與它所代表的十進制數之間符合二進制數和十進制數相互轉換的規(guī)則。

⑶不允許出現1010~1111。這六個代碼在8421碼中是非法碼。9/18/202377備注2.4十進制數和數串的表示2.2421碼其主要特點是:

⑴它也是一種有權碼,四位二進制代碼的位權從高到低分別為2、4、2、1。

⑵它又是一種對9的自補碼。即某數的2421碼,只要自身按位取反,就能得到該數對9之補的2421碼。例如:

3的2421碼是0011。3對9之補是6,而6的2421碼是1100。

⑶不允許出現0101~1010。這六個代碼在2421碼中是非法碼。9/18/2023782.4十進制數和數串的表示3.余3碼其主要特點是:

⑴這是一種無權碼,但也可看作是一種特殊的有權碼,即在8421碼的基礎上加+3(+0011)形成的,故稱余3碼。在這種編碼中各位的“1”不表示一個固定的十進制數值,因而不直觀。

⑵它也是一種對9的自補碼。

⑶不允許出現0000~0010、1101~1111。這六個代碼在余3碼中是非法碼。9/18/2023792.4十進制數和數串的表示4.格雷碼(Gray)碼十進制Gray碼的方案有很多種,Gray碼可以避免在計數時發(fā)生中間錯誤,所以也被稱為可靠性編碼。其主要特點是:

(1)它也是一種無權碼。

(2)從一種代碼變到相鄰的下一種代碼時,只有一個二進制位的狀態(tài)在發(fā)生變化。

(3)具有循環(huán)特性,即首尾兩個數的Gray碼也只有一個二進制位不同,因此Gray碼又稱為循環(huán)碼。

(4)十進制Gray碼也有6個代碼為非法碼,視具體方案而定。9/18/2023802.4十進制數和數串的表示2.4.2十進制數串1.非壓縮的十進制數串一個字節(jié)可存放一個十進制數或符號的ASCII碼。非壓縮的十進制數串又根據符號所處的位置,分成前分隔式數字串和后嵌入式數字串兩種格式。

在前分隔式數字串中,符號位占用單獨一個字節(jié),放在數值位之前,正號對應的ASCII碼為2BH,負號對應的ASCII碼為2DH。00101011001011019/18/202381

在后嵌入式數字串中,符號位不再單獨占用一個字節(jié),正號為00H,負號為40H,嵌入到最末數值位。所以正數最末位不變,負數最末位加上40H。2.4十進制數和數串的表示

如:+256,在主存中連續(xù)四個字節(jié)存放,對應的ASCII碼為2BH,32H,35H,36H。

如:-256,在主存中連續(xù)四個字節(jié)存放,對應的ASCII碼為2DH,32H,35H,36H。0100000000000000

如:+256,在主存中連續(xù)三個字節(jié)存放,對應的ASCII碼為32H,35H,36H。

如:-256,在主存中連續(xù)三個字節(jié)存放,對應的ASCII碼為32H,35H,76H。9/18/2023822.4十進制數和數串的表示2.壓縮的十進制數一個字節(jié)可存放兩位BCD碼表示的十進制數,既節(jié)省了存儲空間,又便于直接進行十進制算術運算。在主存中,一個壓縮的十進制數串占用連續(xù)的多個字節(jié),每位數字僅占半個字節(jié),其值常用8421碼表示。符號位也占半個字節(jié),并存放在最低數值位之后,通常用CH表示正號,DH表示負號。在這種表示中,規(guī)定數字的個數加符號位之和必須為偶數,當和為奇數時,應在最高數值位之前補一個“0”(即第一個字節(jié)的高半字節(jié)為“0000”)。110011019/18/2023832.4十進制數和數串的表示如:+256兩個字節(jié):25H,6CH0010010101101100如:-2568三個字節(jié):02H,56H,8DH0000001001011101011010009/18/2023842.5現代微機系統(tǒng)中的數據表示舉例

現代的微機系統(tǒng)大多采用Intel系列的微處理器,近年來,Intel的微處理器有了極大的發(fā)展,從80386到80486、奔騰(也稱為80586)、奔騰MMX、奔騰Pro(也稱為80686)、奔騰II、奔騰III,直至最新的奔騰4,形成了IA(IntelArchitecture)-32結構。下面以IA-32結構為例,介紹現代微機系統(tǒng)的數據表示。

IA-32結構的基本數據類型是字節(jié)、字、雙字(DWORD)、四字(QWORD)和雙四字(DQWORD)。9/18/2023852.5現代微機系統(tǒng)中的數據表示舉例9/18/2023862.5現代微機系統(tǒng)中的數據表示舉例1.無符號整數

無符號整數是包含字節(jié)、字、雙字和四字的無符號的二進制數。無符號整數的范圍,對于字節(jié),從0~255;對于字,從0~65535;對于雙字,從0~232-1;對于四字,從0~264-1。當在主存中存儲無符號整數時,字存放在任何字節(jié)地址開始2個連續(xù)字節(jié)中;雙字存放在4個連續(xù)字節(jié)中;四字存放在8個連續(xù)的字節(jié)中。

9/18/2023872.5現代微機系統(tǒng)中的數據表示舉例2.帶符號整數帶符號整數是包含字節(jié)、字、雙字和四字的帶符號的二進制定點整數。所有帶符號整數的數據類型都以補碼形式表示,符號位是最高位(MSB)。正數的符號位為0,負數的符號位為1。帶符號整數的范圍,對于字節(jié),從-128~+127;對于字,從-32768~+32767;對于雙字,從-231~+231-1;對于四字,從-263~+263-1。當在主存中存儲帶符號整數時,字存放在2個連續(xù)字節(jié)中;雙字存放在4個連續(xù)字節(jié)中;四字存放在8個連續(xù)的字節(jié)中。

9/18/202388

2.5現代微機系統(tǒng)中的數據表示舉例3.浮點數

IA-32結構定義和操作三種浮點數據類型:單精度浮點數(短浮點數)、雙精度浮點數(長浮點數)和擴展精度浮點數(臨時浮點數)。

這些數據類型的格式與IEEE754標準所規(guī)定的格式直接對應,在此不再重復。9/18/2023892.5現代微機系統(tǒng)中的數據表示舉例4.指針數據

指針是主存單元的地址,IA-32結構定義了兩種類型的指針:近指針和遠指針。

近指針即32位指針,是一個32位的段內偏移量,段內尋址時用。遠指針即48位指針,由16位選擇符和32位偏移量組成,用于跨段訪問。

9/18/2023902.5現代微機系統(tǒng)中的數據表示舉例5.串數據

串是位、字節(jié)、字或雙字的連續(xù)序列。串數據包括位串和字節(jié)串。位串是指連續(xù)的位,它能從任一字節(jié)的任一位置開始,位串長度可達232-1位。字節(jié)串包含連續(xù)的字節(jié)、字或雙字,長度為0~232-1字節(jié)(4G字節(jié))。

9/18/2023912.5現代微機系統(tǒng)中的數據表示舉例

6.BCD數

IA-32結構中所指的BCD碼實際上是指NBCD碼(即8421碼)。BCD數分成壓縮的BCD數和非壓縮的BCD數兩種。壓縮的BCD數是每個字節(jié)包含兩位十進制數,其低位在3~0位上,高位在7~4位上;而非壓縮的BCD數每個字節(jié)僅包含一位十進制數,在3~0位上。9/18/202392備注2.6數據校驗碼

數據校驗碼是指那些能夠發(fā)現錯誤或能夠自動糾正錯誤的數據編碼,又稱之為“檢錯糾錯編碼”。任何一種編碼都由許多碼字構成,任意兩個碼字之間最少變化的二進制位數,被稱為數據校驗碼的碼距。例如,用四位二進制表示16種狀態(tài),則有16個不同的碼字,此時碼距為1,即兩個碼字之間最少僅有一個二進制位不同(如0000與0001之間)。這種編碼沒有檢錯能力,因為當某一個合法碼字中有一位或幾位出錯,就變成為另一個合法碼字了。9/18/2023932.6數據校驗碼具有檢、糾錯能力的數據校驗碼的實現原理是:在編碼中,除去合法的碼字外,再加進一些非法的碼字,當某個合法碼字出現錯誤時,就變成為非法碼字。合理地安排非法碼字的數量和編碼規(guī)則,就能達到糾錯的目的。例如,若用四位二進制表示八個狀態(tài),其中只有八個碼字是合法碼字,而另八個碼字為非法碼字,此時碼距為2。對于碼距≥2的數據校驗碼,開始具有檢錯的能力。碼距越大,檢、糾錯能力就越強,而且檢錯能力總是大于或等于糾錯能力。9/18/202394備注2.6數據校驗碼2.6.1奇偶校驗碼1.奇偶校驗概念奇偶校驗碼是一種最簡單的數據校驗碼,它可以檢測出一位(或奇數位)錯誤。奇偶校驗碼的碼距等于2。奇偶校驗實現方法是:由若干位有效信息(如一個字節(jié)),再加上一個二進制位(校驗位)組成校驗碼,然后根據校驗碼的奇偶性質進行校驗。

奇偶校驗碼(N+1位)=N位有效信息+1位校驗位9/18/202395N位1位2.6數據校驗碼奇偶校驗位9/18/202396N位1位2.6數據校驗碼奇偶校驗碼9/18/2023972.6數據校驗碼

校驗位的取值(0或1)將使整個校驗碼中“1”的個數為奇數或偶數,所以有兩種可供選擇的校驗規(guī)律: 奇校驗──整個校驗碼(有效信息位和校驗位)中“1”的個數為奇數。偶校驗──整個校驗碼中“1”的個數為偶數。9/18/202398CPU奇偶校驗電路主存2.6數據校驗碼8位8位9位9位0101010101010101101010101110101010101010101101010101101010111101010111有4個1有5個1正確出錯有6個1中斷處理9/18/2023992.6數據校驗碼2.簡單奇偶校驗(以奇校驗為例)

(1)校驗位形成當要把一個字節(jié)的代碼D7~D0寫入主存時,就同時將它們送往奇偶校驗邏輯電路,該電路產生的“奇形成”信號就是校驗位。它將與8位代碼一起作為奇校驗碼寫入主存。

若D7~D0中有偶數個“1”,則“奇形成”=1,

若D7~D0中有奇數個“1”,則“奇形成”=0。9/18/20231002.6數據校驗碼9/18/20231012.6數據校驗碼(2)校驗檢測

讀出時,將讀出的9位代碼(8位信息位和1位校驗位)同時送入奇偶校驗電路檢測。若讀出代碼無錯,則“奇校驗出錯”=0;若讀出代碼中的某一位上出現錯誤,則“奇校驗出錯”=1,從而指示這個9位代碼中一定有某一位出現了錯誤,但具體的錯誤位置是不能確定的。9/18/20231022.6數據校驗碼3.交叉奇偶校驗

計算機在進行大量字節(jié)(數據塊)傳送時,不僅每一個字節(jié)有一個奇偶校驗位做橫向校驗,而且全部字節(jié)的同一位也設置一個奇偶校驗位做縱向校驗,這種橫向、縱向同時校驗的方法稱為交叉校驗。

第1字節(jié)11001011→1第2字節(jié)01011100→0第3字節(jié)10011010→0第4字節(jié)10010101→0↓↓↓↓↓↓↓10011000橫向校驗位縱向校驗位9/18/20231032.6數據校驗碼交叉校驗可以發(fā)現兩位同時出錯的情況,假設第2字節(jié)的a6、a4兩位均出錯,橫向校驗位無法檢出錯誤,但是第a6、a4位所在列的縱向校驗位會顯示出錯,這與前述的簡單奇偶校驗相比要保險多了。9/18/20231042.6數據校驗碼2.6.2海明校驗碼海明碼實際上是一種多重奇偶校驗,其實現原理是:在有效信息位中加入幾個校驗位形成海明碼,并把海明碼的每一個二進制位分配到幾個奇偶校驗組中。當某一位出錯后,就會引起有關的幾個校驗位的值發(fā)生變化,這不但可以發(fā)現錯誤,還能指出錯誤的位置,為自動糾錯提供了依據。9/18/20231052.6數據校驗碼

(1)編碼一個字節(jié)由8位二進制位組成,此時N=8,從表2-9中查得K=5,故海明碼的總位數為13位,可表示為:

H13H12

…H2H1

五個校驗位P5~P1對應的海明碼位號應分別為:H13、H8、H4、H2、H1,除P5外,其余四位都滿足Pi的位號等于2i-1的關系,而P5只能放在H13上,因為它已經是海明碼的最高位了。因此,有如下排列關系:

P5

D8D7D6D5

P4

D4D3D2

P3

D1

P2P1

9/18/2023106備注2.6數據校驗碼

各個信息位形成Pi

值的偶校驗的結果:

P1=D1

D2

D4

D5

D7

P2=D1

D3

D4

D6

D7

P3=D2

D3

D4

D8

P4=D5

D6

D7

D8

依據各信息位形成Pi(i=1~4)值時,不同信息位出現在Pi項中的次數是不一樣的,其中D4和D7都出現三次,而D1、D2、D3、D5、D6、D8僅出現兩次,為此,還要補充一位P5校驗位,使:

P5=D1

D2

D3

D5

D6

D89/18/2023107備注2.6數據校驗碼(2)校驗將接收到的海明碼按如下關系進行偶校驗:

S1=P1

D1

D2

D4

D5

D7

S2=P2

D1

D3

D4

D6

D7

S3=P3

D2

D3

D4

D8

S4=P4

D5

D6

D7

溫馨提示

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

評論

0/150

提交評論