浮點數(shù)的表示方法
浮點數(shù),是指小數(shù)點在數(shù)據(jù)中的位置可以左右移動的數(shù)據(jù)。它通常被表示成:
N = M* RE
這里的M(Mantissa)被稱為浮點數(shù)的尾數(shù),R(Radix)被稱為階碼的基數(shù),E(Exponent)被稱為階的階碼。計算機中一般規(guī)定R為2、8或16、是一個確定的常數(shù),不需要在浮點數(shù)中明確表示出來。因此,要表示浮點數(shù),一是要給出尾數(shù)M的值,通常用定點小數(shù)形式表示,它決定了浮點數(shù)的表示精度,即可以給出的有效數(shù)字的位數(shù)。二是要給出階碼,通常用整數(shù)形式表示,它指出的是小數(shù)點在數(shù)據(jù)中的位置,決定了浮點數(shù)的表示范圍。浮點數(shù)也要有符號位。在計算機中,浮點數(shù)通常被表示成如下格式:
Ms是尾數(shù)的符號位,即浮點數(shù)的符號位,安排在最高一位;
E 是階碼,緊跟在符號位之后,占用m位,含階碼的一位符號;
M 是尾數(shù),在低位部分,占用n位。
合理地選擇m和n的值是十分重要的,以便在總長度為1+m+n個二進制表示的浮點數(shù)中,既保證有足夠大的數(shù)值范圍,又保證有所要求的數(shù)值精度。例如,在PDP-11/70計算機中,用32位表示的一個浮點數(shù),符號位占一位,階碼用8位,尾數(shù)用23位,數(shù)的表示范圍約為±1.7*10±38 ,精度約為10進制的7位有效數(shù)字。
若不對浮點數(shù)的表示格式作出明確規(guī)定,同一個浮點數(shù)的表示就不是唯一的。例如0.5也可以表示為0.05×101 , 50×10-2 等。為了提高數(shù)據(jù)的表示精度,也為了便于浮點數(shù)之間的運算與比較,規(guī)定計算機內浮點數(shù)的尾數(shù)部分用純小數(shù)形式給出,而且當尾數(shù)的值不為0時,其絕對值應大于或等于0.5,這被稱為浮點數(shù)的規(guī)格化表示。對不符合這一規(guī)定的浮點數(shù),要通過修改階碼并同時左右移尾數(shù)的辦法使其變成滿足這一要求的表示形式,這種操作被稱為的規(guī)格化處理,對浮點數(shù)的運算結果就經(jīng)常需要進行規(guī)格化處理。
當一個浮點數(shù)的尾數(shù)為0,不論其階碼為何值,該浮點數(shù)的值都為0。當階碼的值為它能表示的最小一個值或更小的值時,不管其尾數(shù)為何值,計算機都把該浮點數(shù)看成零值,通常稱其為機器零,此時該浮點數(shù)的所有各位(包括階碼位和尾數(shù)位)都清為0值。
按國際電子電氣工程師協(xié)會的IEEE標準,規(guī)定常用的浮點數(shù)的格式為:
符號位 階碼 尾數(shù) 總位數(shù)
短浮點數(shù) 1 8 23 32
長浮點數(shù) 1 11 52 64
臨時浮點數(shù) 1 15 64 80
對短浮點數(shù)和長浮點數(shù),當其尾數(shù)不為0值時,其最高一位必定為1,在將這樣的浮點數(shù)寫入內存或磁盤時,不必給出該位,可左移一位去掉它,這種處理技術稱為隱藏位技術,目的是用同樣多位的尾數(shù)能多保存一位二進制位。在將浮點數(shù)取回運算器執(zhí)行運算時,再恢復該隱藏位的值。對臨時浮點數(shù),不使用隱藏位技術。
從上述討論可以看到,浮點數(shù)比定點小數(shù)和整數(shù)使用起來更方便。例如,可以用浮點數(shù)直接表示電子的質量9×10-28 克,太陽的質量2×1033 克,圓周率3.1416等。上述值都無法直接用定點小數(shù)或整數(shù)表示,要受數(shù)值范圍和表示格式各方面的限制。
浮點數(shù),是指小數(shù)點在數(shù)據(jù)中的位置可以左右移動的數(shù)據(jù)。它通常被表示成:
N = M* RE
這里的M(Mantissa)被稱為浮點數(shù)的尾數(shù),R(Radix)被稱為階碼的基數(shù),E(Exponent)被稱為階的階碼。計算機中一般規(guī)定R為2、8或16、是一個確定的常數(shù),不需要在浮點數(shù)中明確表示出來。因此,要表示浮點數(shù),一是要給出尾數(shù)M的值,通常用定點小數(shù)形式表示,它決定了浮點數(shù)的表示精度,即可以給出的有效數(shù)字的位數(shù)。二是要給出階碼,通常用整數(shù)形式表示,它指出的是小數(shù)點在數(shù)據(jù)中的位置,決定了浮點數(shù)的表示范圍。浮點數(shù)也要有符號位。在計算機中,浮點數(shù)通常被表示成如下格式:
Ms是尾數(shù)的符號位,即浮點數(shù)的符號位,安排在最高一位;
E 是階碼,緊跟在符號位之后,占用m位,含階碼的一位符號;
M 是尾數(shù),在低位部分,占用n位。
合理地選擇m和n的值是十分重要的,以便在總長度為1+m+n個二進制表示的浮點數(shù)中,既保證有足夠大的數(shù)值范圍,又保證有所要求的數(shù)值精度。例如,在PDP-11/70計算機中,用32位表示的一個浮點數(shù),符號位占一位,階碼用8位,尾數(shù)用23位,數(shù)的表示范圍約為±1.7*10±38 ,精度約為10進制的7位有效數(shù)字。
若不對浮點數(shù)的表示格式作出明確規(guī)定,同一個浮點數(shù)的表示就不是唯一的。例如0.5也可以表示為0.05×101 , 50×10-2 等。為了提高數(shù)據(jù)的表示精度,也為了便于浮點數(shù)之間的運算與比較,規(guī)定計算機內浮點數(shù)的尾數(shù)部分用純小數(shù)形式給出,而且當尾數(shù)的值不為0時,其絕對值應大于或等于0.5,這被稱為浮點數(shù)的規(guī)格化表示。對不符合這一規(guī)定的浮點數(shù),要通過修改階碼并同時左右移尾數(shù)的辦法使其變成滿足這一要求的表示形式,這種操作被稱為的規(guī)格化處理,對浮點數(shù)的運算結果就經(jīng)常需要進行規(guī)格化處理。
當一個浮點數(shù)的尾數(shù)為0,不論其階碼為何值,該浮點數(shù)的值都為0。當階碼的值為它能表示的最小一個值或更小的值時,不管其尾數(shù)為何值,計算機都把該浮點數(shù)看成零值,通常稱其為機器零,此時該浮點數(shù)的所有各位(包括階碼位和尾數(shù)位)都清為0值。
按國際電子電氣工程師協(xié)會的IEEE標準,規(guī)定常用的浮點數(shù)的格式為:
符號位 階碼 尾數(shù) 總位數(shù)
短浮點數(shù) 1 8 23 32
長浮點數(shù) 1 11 52 64
臨時浮點數(shù) 1 15 64 80
對短浮點數(shù)和長浮點數(shù),當其尾數(shù)不為0值時,其最高一位必定為1,在將這樣的浮點數(shù)寫入內存或磁盤時,不必給出該位,可左移一位去掉它,這種處理技術稱為隱藏位技術,目的是用同樣多位的尾數(shù)能多保存一位二進制位。在將浮點數(shù)取回運算器執(zhí)行運算時,再恢復該隱藏位的值。對臨時浮點數(shù),不使用隱藏位技術。
從上述討論可以看到,浮點數(shù)比定點小數(shù)和整數(shù)使用起來更方便。例如,可以用浮點數(shù)直接表示電子的質量9×10-28 克,太陽的質量2×1033 克,圓周率3.1416等。上述值都無法直接用定點小數(shù)或整數(shù)表示,要受數(shù)值范圍和表示格式各方面的限制。
評論
查看更多