<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-3  評論-0  文章-0  trackbacks-0

    浮點數分為單精度和雙精度,Java中的單精度和雙精度分別為float和double.你們知道float和double是怎么存儲的嗎?

      float占4個字節,double占8個字節,為了方便起見,這里就只討論float類型.
      float其實和一個int型的大小是一樣的,一共32位,第一位表示符號,2-9表示指數,后面23位表示小數部分.

      這里只舉一個例子,希望能拋磚引玉,就是研究一下浮點數0.1的存儲形式,先運行這個程序.


    ?  public class Test{
      public static void main(String[] args) {
      int x = 0x3d800000;
      int i = 1 << 22;
      int j = 1 << 4;
      float f = 0.1f;
      int y = Float.floatToIntBits(f);
      float rest = f - ( (float) 1) / j;
      while (i > 0) {
      j <<= 1;
      float deta = ( (float) 1) / j;
      if (rest >= deta) {
      rest -= deta;
      x |= i;
      }
      i >>= 1;
      }
      pr(x);
      pr(y);
      }

      static void pr(int i) {
      System.out.println(Integer.toBinaryString(i));
      }

      }
    ?
      結果:
      111101110011001100110011001101
      111101110011001100110011001101

      程序說明:
      int x=0x3d80000;
      因為浮點表示形式為1.f*2n-127我們要表示0.1,可以知道n-127=-4,到n=123
      符號為正,可知前9是 001111011,暫時不考慮后面的23位小數,所以我們先假設x=0x3d800000;


    ?  int i = 1 << 22;
      i初始為第右起第23位為1,就是x的第10位


    ?  int j = 1 << 4;

      i初始為4,因為n-127為-4,這里是為了求它的倒數.


    ?  float f = 0.1f;
      int y = Float.floatToIntBits(f);

      y就是它的32位表示


    ?  float rest = f - ( (float) 1) / j;

      這個rest表示除了1.f中的1剩下的,也就是0.f


    ?  while (i > 0) {
      j <<= 1;
      float deta = ( (float) 1) / j;
      if (rest >= deta) {
      rest -= deta;
      x |= i;
      }
      i >>= 1;
      }

      這個循環來計算23位小數部分,如果rest不小于deta,表示這個位可以置為1.

      其他的不多說了,輸入結果是一樣的,可以說0.1這個浮點數肯定是不精確的,但是0.5可以精確的表示,想想為什么吧.


    轉至 www.csdn.net

    posted on 2006-07-16 13:37 StarShowerJavaWorld 閱讀(313) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 日本免费人成视频播放| caoporm超免费公开视频| 亚洲电影唐人社一区二区| 亚洲国产夜色在线观看| 亚洲精品午夜国产va久久| 爱情岛论坛亚洲品质自拍视频网站 | 亚洲精品~无码抽插| 777亚洲精品乱码久久久久久 | 四虎永久在线精品免费观看地址 | 无码国产精品一区二区免费| 处破痛哭A√18成年片免费| 日本一道综合久久aⅴ免费| 亚洲欧洲无码一区二区三区| 精品国产免费一区二区三区| 亚洲精品免费在线| 国产网站免费观看| 亚洲精品在线网站| 妻子5免费完整高清电视| 亚洲中文字幕一二三四区苍井空| 一区视频免费观看| 日韩av无码成人无码免费| 在线亚洲午夜理论AV大片| 亚洲人成影院午夜网站| 特级做A爰片毛片免费69| 国产亚洲av片在线观看16女人| 人妻在线日韩免费视频| 免费观看国产小粉嫩喷水| 日本中文字幕免费看| 麻豆视频免费观看| 久久被窝电影亚洲爽爽爽| 看全免费的一级毛片| 中文字幕无码视频手机免费看| 欧美色欧美亚洲另类二区| 成人无码区免费A片视频WWW| 亚洲youwu永久无码精品| 日韩精品无码区免费专区 | 丁香婷婷亚洲六月综合色| 免费一看一级毛片全播放| 亚洲熟妇无码av另类vr影视| 97在线视频免费公开观看| 亚洲AV无码一区二区二三区软件|