隨筆-144  評(píng)論-80  文章-1  trackbacks-0

           基本型別  大小  最小值  最大值
           boolean  -----  -----  ------
           char  16-bit  Unicode 0  Unicode 2^16-1
           byte  8-bit  -128  +127
           short  16-bit  -2^15  +2^15-1
           int  32-bit  -2^31 +2^31-1
           long  64-bit  -2^63 +2^63-1
           float  32-bit IEEE754 IEEE754
           double  64-bit IEEE754 IEEE754
           void      

          注意!:表格里的^代表的是次方哈~

          使用 Float 類 節(jié)省開發(fā)時(shí)間 
          作者: Builder.com
          2004-11-16 11:50 AM
           

          即使你可能知道 IEEE 浮點(diǎn)數(shù),你可能也從來(lái)沒有逐個(gè)比特地處理過這類數(shù)據(jù)。下面我將向你展示如何逐個(gè)比特地處理 IEEE 浮點(diǎn)數(shù),下次在你的 Java 項(xiàng)目需要從比特序列創(chuàng)建浮點(diǎn)數(shù)時(shí),或者從浮點(diǎn)數(shù)創(chuàng)建比特序列時(shí),你就知道Float 類可以為完成這一工作。

          IEEE 浮點(diǎn)數(shù)介紹

          IEEE 754 浮點(diǎn)單精度數(shù)字格式定義了一個(gè)用于存儲(chǔ)浮點(diǎn)數(shù)的比特布局。在空比特布局中,一個(gè)比特留作符號(hào)位,八個(gè)比特留作指數(shù),23個(gè)比特留作尾數(shù)。這些比特是按最重要比特到最不重要比特進(jìn)行排列的,如下例所示:


           
          31                             0
          |                              |                     
          SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM

          其中:

          S = 符號(hào)位
          E = 指數(shù)
          M = 尾數(shù)

          你可以從 IEEE 的站點(diǎn)購(gòu)買一份 IEEE 浮點(diǎn)數(shù)的完整解釋。(如果在線搜索 IEEE 754,你應(yīng)該可以找到免費(fèi)的版本。)

          Float 對(duì) Java 社區(qū)的貢獻(xiàn)

          下面的示例程序使用 Float 的兩個(gè)方法將一個(gè)浮點(diǎn)數(shù)轉(zhuǎn)成比特,然后又將這些比特轉(zhuǎn)成一個(gè)浮點(diǎn)數(shù)。

          使用Float.floatToIntBits(float f) 方法可以將一個(gè)浮點(diǎn)數(shù)轉(zhuǎn)成一個(gè)比特序列。這個(gè)方法返回一個(gè)32位整數(shù),表示你作為參數(shù)提供的浮點(diǎn)數(shù)的 IEEE 754 比特排列。

          使用Float.intBitsToFloat(int bits) 方法可以進(jìn)行反方向轉(zhuǎn)換。這個(gè)方法接受傳入的整數(shù)作為參數(shù),將這些比特轉(zhuǎn)成一個(gè) IEEE 浮點(diǎn)數(shù)。

          下面是示例程序:

          public class BitsTip {
              public static void main(String args[]) {
                  float f = Float.parseFloat(args[0]);
                  int bits = Float.floatToIntBits(f);

                  System.out.println("bits: " + bits);
                  System.out.println("back to float: " + Float.intBitsToFloat(bits));
              }
          }

          如果你曾經(jīng)必須要手工進(jìn)行這種轉(zhuǎn)換,那么你就會(huì)很欣賞這兩個(gè)簡(jiǎn)單的方法為你節(jié)省的工作。如果你正在處理64位數(shù),那么可以選擇使用Double 包裝器(wrapper)類。這個(gè)類提供同樣的方法處理IEEE 754 雙精度浮點(diǎn)數(shù)。

          最好選擇閱讀一下javadoc,查閱里面有關(guān)浮點(diǎn)數(shù)與比特序列之間的轉(zhuǎn)換的部分,以便完整地了解這些方法都能為你些做什么。

          posted on 2005-03-10 11:36 小力力力 閱讀(380) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 辽阳县| 扎鲁特旗| 庆城县| 洛扎县| 襄樊市| 康保县| 土默特左旗| 福州市| 积石山| 泸水县| 日喀则市| 内丘县| 福海县| 扬州市| 扎兰屯市| 南开区| 随州市| 东阳市| 于都县| 盖州市| 横山县| 灌阳县| 阳东县| 新巴尔虎右旗| 广安市| 登封市| 宁晋县| 连州市| 离岛区| 漳平市| 潮州市| 广平县| 桐乡市| 南江县| 南开区| 磴口县| 新巴尔虎左旗| 禹州市| 泗水县| 无棣县| 漳州市|