隨筆-144  評論-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 類 節省開發時間 
          作者: Builder.com
          2004-11-16 11:50 AM
           

          即使你可能知道 IEEE 浮點數,你可能也從來沒有逐個比特地處理過這類數據。下面我將向你展示如何逐個比特地處理 IEEE 浮點數,下次在你的 Java 項目需要從比特序列創建浮點數時,或者從浮點數創建比特序列時,你就知道Float 類可以為完成這一工作。

          IEEE 浮點數介紹

          IEEE 754 浮點單精度數字格式定義了一個用于存儲浮點數的比特布局。在空比特布局中,一個比特留作符號位,八個比特留作指數,23個比特留作尾數。這些比特是按最重要比特到最不重要比特進行排列的,如下例所示:


           
          31                             0
          |                              |                     
          SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM

          其中:

          S = 符號位
          E = 指數
          M = 尾數

          你可以從 IEEE 的站點購買一份 IEEE 浮點數的完整解釋。(如果在線搜索 IEEE 754,你應該可以找到免費的版本。)

          Float 對 Java 社區的貢獻

          下面的示例程序使用 Float 的兩個方法將一個浮點數轉成比特,然后又將這些比特轉成一個浮點數。

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

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

          下面是示例程序:

          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));
              }
          }

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

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

          posted on 2005-03-10 11:36 小力力力 閱讀(380) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 固原市| 昌乐县| 牡丹江市| 张家川| 宣恩县| 龙江县| 潞西市| 南通市| 太康县| 杂多县| 东港市| 盐城市| 金沙县| 海原县| 卓尼县| 类乌齐县| 泽库县| 本溪| 顺平县| 绵竹市| 神农架林区| 额敏县| 方城县| 康保县| 德庆县| 包头市| 宁强县| 磐安县| 长白| 东明县| 长治市| 丰顺县| 贺兰县| 马鞍山市| 贡嘎县| 山丹县| 宝山区| 杨浦区| 高青县| 涟源市| 精河县|