隨筆-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 小力力力 閱讀(375) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 甘德县| 绍兴县| 富裕县| 尖扎县| 法库县| 沾益县| 呼伦贝尔市| 建阳市| 陆河县| 淳化县| 北辰区| 开化县| 昌乐县| 新余市| 和顺县| 兴隆县| 五原县| 武邑县| 青河县| 文山县| 绥阳县| 苍山县| 光山县| 临安市| 昌黎县| 汶上县| 柏乡县| 合山市| 溧阳市| 稻城县| 平定县| 日照市| 弥勒县| 巍山| 木兰县| 霍邱县| 洛宁县| 仁寿县| 治多县| 洛扎县| 兴隆县|