計算機組成原理(2)
計算機組成原理
第二章 資料的機器層次表示
1、數值資料的表示
十進位制(D) 二進位制(B) 八進位制(Q) 十六進位制(H)
1.1原碼錶示法:
純小數:Xs.X1X2....Xn 正數Xs=0;負數Xs=1;數值部分保持不變
純整數:XsX1X2....Xn 正數Xs=0;負數Xs=1;數值部分保持不變(,)
真值0:[+0]=00000;[-0]=10000;
1.2補碼錶示法
純小數:Xs.X1X2....Xn 正數Xs=0;負數Xs=1;正數數值部分保持不變,負數數值部分按位取反,最低位+1;
純整數:XsX1X2....Xn 正數Xs=0;負數Xs=1;正數數值部分保持不變,負數數值部分按位取反,最低位+1;
真值0:[+0]=[-0]=00000;
模:M=2*(n+1)(字長為2n+1)
比較:補碼正、負不對稱,多了一個(-2*n)或(-1)
1.3反碼錶示法
純小數:Xs.X1X2....Xn 正數Xs=0;負數Xs=1;正數數值部分保持不變,負數數值部分按位取反;
純整數:XsX1X2....Xn 正數Xs=0;負數Xs=1;正數數值部分保持不變,負數數值部分按位取反;
真值0:[+0]=00000;[-0]=11111;
1.4原碼轉換為反碼
(1)符號位不變,數值部分全部取反,然後最低位+1;
(2)從低到高,尾數的第一個1以及其右邊的0不變,符號位不變,其他取反
2.機器數的定點表示與浮點表示
2.1定點表示法
2.1.1定點小數
X(最大正數)=0.111111...=(1-2^-n)
X(最小正數)=0.00000...1=2^-n
X(絕對值最大負數原碼錶示)=1.1111....=-(1-2^-n)
X(絕對值最大負數屬補碼錶示)=-1
總結:機器字長有N+1位時,原碼定點小數範圍為-(1-2^-n)~(1-2^-n);補碼定點小數範圍為-1~(1-2^-n)
2.1.2定點整數:小數點位置隱含固定在最低有效位之後。eg:XsX1X2....Xn[.]
X(最大正數)=011111.....=2^(n)-1
X(最小正數)=00000...1=1
X(絕對值最大負數原碼錶示)=11111...=1-2^n
X(絕對值最大負數補碼錶示)=111...=-2^n
總結:機器字長有N+1位時,原碼定點小數範圍為-(2^n-1)~(2^n-1);補碼定點小數範圍為-2^n~(2^n-1)
2.2浮點表示法
2.2.1浮點數的表示形式
{[Es|E][Ms|M]}
Es:長度為1,為階碼部分的符號位
E:長度為k,為階碼部分的數值部分
Ms:長度為1,為尾數部分的符號位
M:長度為n,為尾數部分的數值位
浮點數:N=M*r^E(r為浮點數階碼的底,一般為2,階碼的大小反映了小數點在浮點數中的實際位置)
X(最大正數)=011111...011111...=(1-2^-n)*2^(2^k-1)
X(最小正數)=10000...100.....1=2^-n*2^(-2^K)
X(絕對值最大負數)=011111...10000000...=-1*2^(2^k-1)[【不太明白為什麼不分類]】
2.2.2規格化浮點數
規定尾數的最高數位必須是一個有效值。
規格化浮點數的尾數M的絕對值要求:1/r<=|M|<1;
(1)原碼錶示時,要求尾數的最高尾數為1.1/r<=|M|<1;
(2)補碼錶示時,要求尾數最高尾數與符號位不同並且1/r<=|M|<1;
(3)規格化的最小正數:0.100000=2^(-1)*2^(-2^k)
2.2.3移碼錶示法
移碼:稱為增碼或偏碼。移碼就是在真值X上增加一個常數,這個常數被稱為偏置值。相當於真值X在數軸上偏移了若干個單位。
表示為[X]移=偏置值+X。偏置值一般為2^n;對於機器字長為n+1來說
移碼的特點:
1).最高位0表示負,1表示正。
2)真值0表示唯一。[+0]=[-0]=10000000。
3)移碼可視為無符號數。
4)同一數值的移碼和補碼僅符號位相反。
2.2.4標準浮點數
1)分類:短浮點數、長浮點數、臨時浮點數
2)短浮點數稱為i單精度浮點數,長浮點數稱為雙精度浮點數。都採用隱含尾數最高數位的方法(為什麼)。臨時浮點數成為擴充套件精度浮點數,沒有隱含位。
3)尾數用原碼錶示,階碼用移碼錶示。
4)短浮點數的尾數為23位(實際24),長浮點數為52位。
5)十進位制與短浮點數格式之間的相互轉換:
十進位制變為二進位制——規格化二進位制——階碼由規格化二進位制得來,計算階碼的移碼——分別寫出尾數符號位,階碼,尾數——對應的16進位制轉換
ps:記得隱含掉的“1”的問題。
2.3定點表示VS 浮點表示
1)數值的表示範圍:浮點>定點
2)精度:浮點數降低了
3)數的運算:浮點變複雜了
4)溢位處理:定點更容易溢位
2.4定點機VS浮點機
1)定點機:以定點運算為主,浮點運算通過軟體實現
2)定點機+浮點運算部件:微、小型計算機的配置
3)浮點機:具有浮點運算指令和基本浮點運算器。大、中型計算機。
3.非數值資料的表示
3.1字串存放
1)向量法:物理位置必須相鄰,實際存放的是ASCII值,不方便增刪改查。
2)串表法:每個字元程式碼後面都有連結字,物理位置不必相鄰。但是主存利用率不高。
3.2漢字的表示
1)漢字國標碼:每個漢字、圖形用兩個位元組,每個位元組只用低7位進行編碼。
2)漢字區位碼:常用的6763分為94個區,每個區94個漢字(位)。區、位組成二維陣列。區位碼字長為4位,前兩位為區號,後兩位為位號。
國標碼=區位碼(16進位制)+2020H
3)漢字機內碼:兩個字長的程式碼。漢字機內碼=漢字國標碼+8080H
4)漢字字形碼:確定一個漢字字形點陣的程式碼(又稱漢字字模碼、漢字輸入碼)筆畫所到之處為1,否則為0。點陣越密集,漢字質量越高。
3.3統一程式碼(unicode):
1)定義:有足夠能力來表達任意一種語言使用的所有符號
2)編碼方式:用一個16位數來表示unicode中每個符號。符號集被稱為基本多語言平面(BMP)。
3)實現方式:unicode實現方式不同於編碼方式。unicode編碼確定,但是實現方式不同。
4.十進位制數和數串的表示
4.1十進位制編碼:用4位二進位制數來表示一位二進位制數(稱為BCD碼)
ps:因為可以從16種程式碼中選出10種來,所以稱為多種BCD編碼。
4.1.18421碼:稱為NBCD碼。其中1010~1111為非法碼。
4.1.2 2421碼:
1)位權從高到低一次為2421.
2)9的自補碼:只要將自身按位取反,就能得到該數對9的自補2421碼。
3)0101~1010為非法碼。
4.1.3餘3碼:
1)無權碼
2)9的自補碼。
3)0000~0010、1101~1111為非法碼。
4.1.4格雷碼
1)無權碼
2)相鄰狀態變化時,僅有一位二進位制位不同。
3)迴圈特性。
4)6個程式碼(不確定)為非法碼。
4.2十進位制數
4.2.1非壓縮的十進位制數:一個位元組可以存放一個十進位制或者符號的ASCII碼。
根據符號位所處位置,分為以下兩類:
1)前分隔式數字串:符號位單獨佔用一個位元組,放在數值位之前。數值存放用對應的ASCII值。符號位:正數_2BH,負數_2DH.
2)後嵌入式字串:符號位不單獨佔用一個位元組。,而是嵌入到數值最後一位。正數不變,符號最後一位加40H。
4.2.2壓縮十進位制數
一個字存放兩位BCD碼的二進位制數。
符號位也佔用半個位元組,並存放在最低位後面。用CH表示正數。DH表示負數。
規定:數的個數+符號位之和必須為偶數。
當為奇數時,最高位補0H,即第一個位元組高半位為0000.
5.不同型別的資料表示舉例
1)無符號整數
2)帶符號整數
3)浮點數
4)指標資料
5)串資料
6)BCD數
6.資料校驗碼
6.1基本概念:
資料校驗碼:那些能夠發現錯誤或能夠自動糾正錯誤的資料編碼,又稱之為“檢錯糾錯編碼”。
碼距:任何一種編碼都由許多碼字構成,任意兩個碼字之間最少變化的二進位制位數。
原理:待理解(!)
相關性:碼距越大,檢錯能力越強,糾錯能力《=檢錯能力。
6.2奇偶校驗碼
1)作用:能監測出一位或者奇數位的錯誤
2)組成:奇偶校驗碼(N+1位)=N位有效資訊+1位校驗位
3)分類:奇校驗:整個校驗碼中1的個數為奇數。偶檢驗:整個校驗碼中1的個數為偶數。
6.3簡單奇偶校驗碼
1)奇形成=1:D7~D0有偶數個1
2)奇形成=0:D7~D0有奇數個1(偶形成是奇形成取反)
3)奇校驗出錯:D校驗與D7~D1異或整體取反(偶校驗出錯是奇校驗出錯取反)
6.4交叉奇偶校驗(橫縱校驗)
可以發現兩位同時出錯
6.5海明校驗碼
發現一位出錯,並能找到出錯位置並自動糾錯,發現兩位錯誤編碼
校驗位的位數K和資訊位的位數N應滿足下列關係:2K-1 ≥N+K+1。
6.6迴圈冗餘校驗碼(CRC碼)
除法原理
K的求法(?)
求解步驟: