在一般書寫中,小數點是用記號"."來表示的,但在電腦中表示任何資訊只能用0或1兩種數位,如果電腦中的小數點用數位表示的話,則與位元位雙不易區分,所以在電腦中小數點就不能夠用記號表示,那麼在電腦中小數點又如何確定呢?
為了確定小數點的位置,在電腦中,數的表示有兩種方法:定點標記法和浮點標記法。
所謂定點與浮點是指一個數的小數點位置是固定的還是浮動的。
(1)定點標記法
所謂定點標記法,是指在電腦中所有數的小數點的位置人為約定固定不變。這樣,小數點的位置就不必用記號"."表示出來了。一般地說,小數點可約定固定在任何數位之後,但常用下列兩種形式: ①定點純小數:約定小數點位置固定在符號之後,如: 顯然,定點數標記法使電腦只能處理純整數或純小數,限制了電腦處理資料的範圍。為了使得電腦能夠處理任意數,我們事先要將參加運算的數乘上一個"比例因素",轉化成純小數或純整數後進行運算。運算結果比例因素還原成實際數值。比例因素要取得合適,使參加運算的數、運算的中間結果以及最後結果都在該定點數所能表示的數值範圍之內。
(2)浮點標記法
在浮點標記法中,小數點的位置是浮動的。為了使小數點可以自由浮動,浮點數由兩部分組成,即尾數部分與階數部分。浮點數在機器中的表示方法如下: 其中,尾數部分表示該浮點數的全部有效數字,它是一個有符號位的純小數;階數部分指明了浮點數實際小數點的位置與尾數(定點純小數)約定的小數點位置之間的位移量P。該位移量P(階數)是一個有符號位的純小數。 當階數當為+P時,則表示小數點向右移動P位;當階數為-P時,則表示小數點和左移動P位。因此,浮點數的小數點隨著P的符號和大小而自由浮動。 從上述可知,一個浮點數是由兩個定點數組合而成的。而一個定點也可以看成是浮點數的一個特例。即當浮點數的階數部分為零時(表示該數實際小數點的位置與定點小數約定位置一致),這樣,浮點數只剩下尾數部分了。同理,定點數標記法是浮點數標記法的基礎,而浮點數標記法是定點數標記法的應用。它們之間的相互關係,從理論上看有下述關係。
我們知道,任意一個位元總可以表示為純小數(或純整數)和一個2的整數次冪的乘積。例如,任意一個位元N可寫成:
N=S×2^p
式中,S稱為數N的尾數;P稱為數N的階數,此處P、S都是用二進位表示的數。尾數S表示了數N的全部有效數字,顯然S採用的數位越多,則數N表示的數值精確度越高。階數P指明了數N的小數點的位置,顯然P採用的數位越多,則數N表示的數值範圍就越大。
如假定P=0,此時,N=S×20=S。若尾數S為純小數,這時數N為定點小數。
如假定P=0,此時若尾數S為純整數,則數N為定點整數。
如假定P=任意整數,此時,數N需要尾數S和階數P兩部分共同表示,即數N為浮點數。
顯然,浮點數表示的數值範圍比定點數表示的數值範圍大得多。設浮點數的階數位元為m+1位,尾數的位元為n+1位,則浮點數的取值範圍為: 雖然浮點數具有表示數值範圍大的突出優點,但是,浮點數的運算較為複雜。當電腦進行一次浮點數運算時,需要分別進行兩次定點數運算。
例如,設兩個浮點數為:
N1 = 2^P1×S1
N2 = 2^P2×S2
如P1≠P2,則兩數就不能直接相加、減,必須首先對齊小數點(即對階)後,才能作尾數間的加、減運算。對階時,小階向大階看齊,即把階小的小數點左移,在電腦中是尾數數位右移,右移1位,階碼加1,直至兩數的階碼相同為止,然後兩數才能相加減
浮點數的乘除法,階碼和尾數要分別進行運算。
為了使電腦運算過程中不丟失有效數字,提高運算的精度,一般都採用二進位浮點規格化數。所謂浮點規格化,是指尾數S的絕對值小於1而大於或等於1/2,即小數點後面的一位必須是"1"。例如,N= 2+100×0.1011101就是一個浮點規格化數。由於浮點數運算複雜,運算器中除了尾數運算組件外,還有階碼運算組件,控制組件也相應地複雜了,故浮點機的裝置增多,成本較高。
在電腦中,究竟採用浮點制還是定點制,必鬚根據使用要求設計。目前,一般小型機、微型機多採用定點制,而大型主機、巨型機及高檔微型機中多採用浮點制。