浮點演算法
Ⅰ 浮點數編碼介紹
(1)浮點數:
小數點位置可移動的數據稱為浮點數,可用下式表示:N=M*RE
其中,M—尾數,
R—階的基數(也就是指數部分的底)。R 一般取2、8或16,為約定的常數,大多數機器 R 取定為2。
E—階的階碼。
當基數約定後,對浮點數的編碼就只需對尾數和階碼部分進行編碼。浮點數在機器中的形式如下:
尾數M用定點小數表示,階碼E是整數。 M乘以RE後小數點的位置改變,改變指數部分RE的值,小數點的位置隨之變動,故稱上述表示法表示的數據為浮點數。
(2)浮點數的編碼
階碼E一般用移碼或補碼表示,尾數用原碼或補碼表示。
機器零當浮點數的尾數部分M=0時,不論階碼為何值,都看作是零值,稱為機器零。
上溢浮點數的絕對值太大而機器不能表示的情況,此時浮點數的階碼大於機器所能表示的最大階碼。
下溢浮點數的絕對值太小(階碼小於機器所能表示的最小階碼)的情況稱為下溢。當浮點數下溢時,通常將尾數各位強置為零 ,按機器零處理。
(3)規格化浮點數
為了便於浮點數之間的運算與比較,也為了提高浮點數的精度,規定計算機中的浮點數尾數部分必須滿足1/R≤|M|<1,也即,小數點後的第一位必須是有效數字。當尾數用補碼表示,且R=2時,其規格化形式一般為:
上式表明,當尾數的最高數值位與符號位相反時,即為規格化形式。但對於M<0 有兩種特殊情況需考慮。
*M=-1/2,按規定是規格化數,但[-0.5]補=1.10…0,與一般情況相悖,為便於硬體判斷,特規定-0.5不是規格化的數(對補碼而言)。
*M=-1,因小數補碼允許表示-1,且[-1]補=1.00…0.故將-1作為規格化數(對補碼而言 )
(4)IEE754標准
現代計算機中,浮點數一般採用IEEE制定的國際標准,形式如下;
符號位s 階碼e 尾數 總位數
短實數(單精度數) 1 8 23 32
長實數(雙精度數) 1 11 52 64
臨時實數 1 15 64 80
在IEEE754浮點數標准中,符號位也是「0」表示正數,「1」表示負數。階碼也用移碼表示,尾數也是規格化表示,但為如下形式:1.ff---f.在實際表示中,整數位的1省略,稱隱藏位 (臨時實數不採用隱藏位方案)。由於尾數形式的變化,階碼部分也與一般移碼不同,對短實數而言,[X]移=27+x-1=127+x,也就是說此種移碼比一般移碼的值小1,如.[810]移為13310 而不是13410。所以,短實數.長實數和臨時實數的階碼偏移量分別為7FH、3FFH和3FFFH。單精度數所表示的數值為:(-1)5 1.ff---f*2e-127。
注意:浮點數的編碼有多種方法,在實際應用時,首先一定要明確是哪種編碼方法,分清各種編碼方法的不同之處,這樣才能不出差錯。
4.文字的編碼
(1) 西文字元的編碼目前常用的編碼系統是ASCII碼(American Standard Code for Information Interchange)。
ASCII碼特點:
*每個字元用7位二進制代碼表示。在計算機中每個符號實際用8位表示,最高位置「0」或作為奇偶校驗位。
*共有128個符號。其中95個可印刷字元(包括空格),其餘為控制字元。
*字元0——9的高3位編碼為011,低4位為0000——1001(正好為二進制形式的0—9),滿足正常的排序關系,且大、小寫英文一位字母編碼的對應關系簡單,大寫字母的高2位編碼10,低5位為00001-11010(為二進制形式的1—26),小寫字母高2位為11,低5位也為0000—11010。
(2)中文編碼
漢字編碼分輸入碼、機內碼和字形碼等三大類。
漢字輸入碼 主要有數字編碼、拼音編碼和字形編碼等。這幾種編碼方式都是利用相應的編碼規則,用字母數字串代
替漢字,從西文標准鍵盤上輸入漢字。
漢字機內碼用於漢字信息存儲、交換、檢索等的機內代碼,一般用兩個或三個位元組表示一個漢字。為了區別於ASCII
碼,漢字機內代碼中位元組的最高位均為「1」。
漢字字形碼根據漢字字形信息進行編碼,存儲在字形庫中,用於漢字的輸出,常用點陣表示漢字字形。
(3)十進制數的編碼
*字元串形式一個位元組存放一個十進制的數位或符號,用連續的多個位元組表示一個完整的十進制數據。
十進制數據的機內表示常用ASCII碼。有前分隔字元串和串兩種方式。
#前分隔字元串 符號位在數字位之前單獨佔用一個位元組。字元「+」(2B)16表示正號,「-」(2D)16表 示負號。
#後嵌入字元串 將符號位嵌入最低一位數字里。規則:將「-」號變成(40)16與最低位數相加。「+」號省略。
上述兩種表示方法主要用於非數值計算的應用領域,算術運算不方便。
*壓縮十進制數串形式一個位元組存放兩個十進制數位,用連續的多個位元組表示一個完整的十進制數據。比前一種形式節省存儲空間並且便於數據處理,應用廣泛。
在壓縮十進制數串形式中,可以用ASCII碼的低4位或BCD碼表示十進制數。符號位也用4位二進制代碼表示,並放在最低數位之後(C)16=(1100)2代表正號,(D)16=(1101)2表示負號。
用十進制數串表示十進制數據的特點是位長可變,但需給出首地址和串長。
Ⅱ 什麼是採用IEEE浮點演算法計算機
現在絕大多數的主流cpu都了採用IEEE浮點演算法。。。包括MIPS,ARM,x86,除一些低能力嵌入晶元外。PC的x86早在1990年左右的80486普遍內置了浮點80387晶元,就是用來處理IEEE浮點演算法的。現在早已普及很多年。
如果硬體不支持浮點,軟體上也可以實現,只是速度慢一點。比如早期的Java ME手機都需要另外實現浮點運算。