常用的浮點(diǎn)數(shù)存儲(chǔ)格式:32-bit IEEE-754 floating-point format
對(duì)于大小為32-bit的浮點(diǎn)數(shù)(32-bit為單精度,64-bit浮點(diǎn)數(shù)為雙精度,80-bit為擴(kuò)展精度浮點(diǎn)數(shù)),
1、其第31 bit為符號(hào)位,為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)浮點(diǎn)數(shù)的計(jì)算方法:則按照規(guī)定,十進(jìn)制的值用浮點(diǎn)數(shù)表示為:
如果十進(jìn)制為正,則s = 0,否則s = 1;將十進(jìn)制數(shù)表示成二進(jìn)制,然后將小數(shù)點(diǎn)向左移動(dòng),直到這個(gè)數(shù)變?yōu)?.x的形式即尾數(shù),移動(dòng)的個(gè)數(shù)即位指數(shù)。為了保證指數(shù)為正,將移動(dòng)的個(gè)數(shù)都加上127,由于尾數(shù)的整數(shù)位始終為1,故舍去不做記憶。
對(duì)3.141592654來(lái)說(shuō),
1、正數(shù),s = 0;
2、3.141592654的二進(jìn)制形式為正數(shù)部分計(jì)算方法是除以二取整,即得11,小數(shù)部分的計(jì)算方法是乘以二取其整數(shù),得0.0010 0100 0011 1111 0110 1010 1000,那么它的二進(jìn)制數(shù)表示為11.0010 0100 0011 1111 0110 1010 1;
3、將小數(shù)點(diǎn)向左移一位,那么它就變?yōu)?.1001 0010 0001 1111 1011 0101 01,所以指數(shù)為1+127=128,e = 128 = 1000 0000;
4、舍掉尾數(shù)的整數(shù)部分1,尾數(shù)寫(xiě)成0.1001 0010 0001 1111 1011 0101 01,x = 921FB6
5、最后它的浮點(diǎn)是表示為0 1000 0000 1001 0010 0001 1111 1011 0101 = 40490FDA
浮點(diǎn)數(shù)轉(zhuǎn)十進(jìn)制的計(jì)算方法:
則按照規(guī)定,浮點(diǎn)數(shù)的值用十進(jìn)制表示為:
= (-1)^s * (1 + x) * 2^(e - 127)
對(duì)于49E48E68來(lái)說(shuō),
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。
這樣,該浮點(diǎn)數(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)迪 閱讀(2729)
評(píng)論(0) 編輯 收藏 引用