隨筆-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ù),你可能也從來沒有逐個(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)購買一份 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é)省的工作。如果你正在處理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 小力力力 閱讀(375) 評(píng)論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 镶黄旗| 绥棱县| 乳山市| 高清| 油尖旺区| 苗栗市| 安仁县| 额济纳旗| 阿坝县| 东乡族自治县| 疏勒县| 广宗县| 策勒县| 沙湾县| 民权县| 宣恩县| 荆州市| 建阳市| 桦川县| 庆云县| 都江堰市| 永嘉县| 吉林市| 象山县| 子洲县| 栾城县| 通州区| 韶山市| 靖江市| 麻栗坡县| 上栗县| 福泉市| 万载县| 盐池县| 岳阳县| 巴楚县| 和硕县| 锡林郭勒盟| 邛崃市| 盐池县| 沾益县|