常用的浮點數(shù)存儲格式:32-bit IEEE-754 floating-point format
對于大小為32-bit的浮點數(shù)(32-bit為單精度,64-bit浮點數(shù)為雙精度,80-bit為擴(kuò)展精度浮點數(shù)),
1、其第31 bit為符號位,為0則表示正數(shù),反之為復(fù)數(shù),其讀數(shù)值用s表示;
2、第30~23 bit為冪數(shù),其讀數(shù)值用e表示;
3、第22~0 bit共23 bit作為系數(shù),視為二進(jìn)制純小數(shù),假定該小數(shù)的十進(jìn)制值為x;
十進(jìn)制轉(zhuǎn)浮點數(shù)的計算方法:則按照規(guī)定,十進(jìn)制的值用浮點數(shù)表示為:
如果十進(jìn)制為正,則s = 0,否則s = 1;將十進(jìn)制數(shù)表示成二進(jìn)制,然后將小數(shù)點向左移動,直到這個數(shù)變?yōu)?.x的形式即尾數(shù),移動的個數(shù)即位指數(shù)。為了保證指數(shù)為正,將移動的個數(shù)都加上127,由于尾數(shù)的整數(shù)位始終為1,故舍去不做記憶。
對3.141592654來說,
1、正數(shù),s = 0;
2、3.141592654的二進(jìn)制形式為正數(shù)部分計算方法是除以二取整,即得11,小數(shù)部分的計算方法是乘以二取其整數(shù),得0.0010 0100 0011 1111 0110 1010 1000,那么它的二進(jìn)制數(shù)表示為11.0010 0100 0011 1111 0110 1010 1;
3、將小數(shù)點向左移一位,那么它就變?yōu)?.1001 0010 0001 1111 1011 0101 01,所以指數(shù)為1+127=128,e = 128 = 1000 0000;
4、舍掉尾數(shù)的整數(shù)部分1,尾數(shù)寫成0.1001 0010 0001 1111 1011 0101 01,x = 921FB6
5、最后它的浮點是表示為0 1000 0000 1001 0010 0001 1111 1011 0101 = 40490FDA
浮點數(shù)轉(zhuǎn)十進(jìn)制的計算方法:
則按照規(guī)定,浮點數(shù)的值用十進(jìn)制表示為:
= (-1)^s * (1 + x) * 2^(e - 127)
對于49E48E68來說,
1、其第31 bit為0,即s = 0
2、第30~23 bit依次為100 1001 1,讀成十進(jìn)制就是147,即e = 147。
3、第22~0 bit依次為110 0100 1000 1110 0110 1000,也就是二進(jìn)制的純小數(shù)0.110 0100 1000 1110 0110 1000,其十進(jìn)制形式為(0.110 0100 1000 1110 0110 1000 * 2^23) / (2^23) = (0x49E48E68 & 0x007FFFFF) / (2^23) = (0x648E68) / (2^23) = 0.78559589385986328125,即x = 0.78559589385986328125。
這樣,該浮點數(shù)的十進(jìn)制表示
= (-1)^s * (1 + x) * 2^(e - 127)
= (-1)^0 * (1+ 0.78559589385986328125) * 2^(147-127)
= 1872333
posted on 2007-04-02 22:28
藍(lán)迪 閱讀(2727)
評論(0) 編輯 收藏 引用