-
階碼
鎖定
- 中文名
- 階碼
- 外文名
- exponent
- 表示方法
- 定點數表示法
- 領 域
- 信息科學
階碼簡介
階碼:對於任意一個二進制數N,可用N=S×2^P表示,其中S為尾數,P為階碼,2為階碼的底,P、S都用二進制數表示,S表示N的全部有效數字,P指明小數點的位置。當階碼為固定值時,數的這種表示法稱為定點表示,這樣的數稱為“定點數”;當階碼為可變時,數的這種表示法稱為浮點表示,這樣的數稱為“浮點數”。
階碼特點
階碼:在機器中表示一個浮點數時需要給出指數,這個指數用整數形式表示,這個整數叫做階碼。
1、當階碼為固定值時,數的這種表示法稱為定點表示,這樣的數稱為“定點數”;當階碼為可變時,數的這種表示法稱為浮點表示,這樣的數稱為“浮點數”。
2、“移碼”用來表示浮點型小數的階碼。對於正數,符號位為“1”,其餘位不變,如+1110001的階碼為11110001;對於負數,符號位為“0”,其餘位取反,最後加“1”,如–1110001的階碼為00001111。
[1]
階碼相關知識
1、移碼(又叫增碼)是符號位取反的補碼,一般用指數的移碼減去1來做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。
2、用補碼錶示階碼的時候,當階碼無限小,產生了下溢的時候,階碼變成了0,那麼這個浮點數的值變為了1。若階碼上溢(超過了階碼錶示的最大值)置溢出標誌,若階碼下溢(移碼錶示是00…0),要置結果為機器0。
3、使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬件電路。
4、補碼這個編碼方案要解決的是如何在機器中表示負數,其本質意義為用一個正數來表示這個正數對應的負數。所謂-20的補碼是指:如何在機器中用補碼形式表示-20。
階碼定點數表示法
通常定點數有兩種表示法,均設P=0,小數點是隱含的,若數值部分為n位:
實際數值不一定都是純整數或純小數,運算前可選擇比例因子,使所有原始數據化成純小數或純整數,運算後再用比例因子恢復成實際值。
[2]
階碼BCD碼
階碼總述
通常,我們習慣用十進制數表示數據,但計算機是用二進制數來表示數據的,這就需要進行數值進制之間的轉換。我們把每位十進制數轉換二進制數的編碼,簡稱為BCD碼(BinaryCodedDecimal)。BCD編碼具有二進制數的形式以滿足數字系統的要求,又具有十進制數的特點。在某些情況下,計算機也可以對這種形式的數直接進行運算。
它是一種數字壓縮存儲編碼,一個字節有8位,而數字0到9最多隻需要使用4位,如果用一個字節來存儲一個數字相對就會有一定的浪費,尤其是在傳輸過程中,由此人們就想出了壓縮的辦法,就是BCD編碼。
BCD編碼將一個字節的8位拆分成高4位和低4位兩個部分,也就是説一個字節能存儲兩個數字。所以BCD的編碼過程就是將數字壓縮的過程,將兩個字節的數字壓縮成一個字節。反之,解碼就是把一個字節的數字拆分為兩個數字單獨存放(大部分的處理都是按字節處理的)。
[3]
階碼編碼方法
8421BCD編碼
這是一種使用最廣的BCD碼,是一種有權碼,其各位的權分別是(從最有效高位開始到最低有效位)8、4、2、1(即23、22、21、20),因而稱為“8421BCD編碼”。
在使用8421BCD碼時一定要注意其有效的編碼僅十個,即:0000~1001。4位二進制數的其餘6個編碼1010、1011、1100、1101、1110、1111不是有效編碼。8421BCD編碼如表2-3所示。這種BCD編碼實際上就是0~9的“等值”二進制數。
2421BCD編碼
2421BCD碼也是一種有權碼,其從高位到低位的權分別為2、4、2、1(同樣也是它得名的原因),其也可以用4位二進制數來表示1位十進制數。
餘3碼
用BCD碼進行進制的轉換時,要求在兩種進制的表現形式上快速轉換,而不是要求在“數值相等”的含義快速轉換。
2000的BCD編碼是把每位上的數2、0、0、0分別轉換為其對應的BCD編碼:0010、0000、0000和0000,把它們合在一起就是2000的BCD編碼:0010000000000000。
在IBMPC機中,根據在存儲器中的不同存放格式,BCD碼又分為:
壓縮型BCD碼:一個字節中存放兩個十進制數碼。
階碼移碼
表示浮點數時還常用一種稱為移碼的碼制。浮點數的階碼錶示指數大小,有正有負,為避開階碼的符號,對每個階碼都加上一個正的常數(稱偏移常數),使能表示的所有階碼都為正整數,變成“偏移”了的階碼,又稱“增碼”。移碼的值不小於0,這樣階碼總為0,可以取消,浮點數小數點的實際位置由移碼減去偏移常數來決定。
一個實數可表示成一個純小數與一個乘冪之積。如;-0.0010011=-0.10011×2^-10(10在這裏也是二進制);-110001101=-0.110001101×2^1001(1001同樣為二進制)。