国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中float類型的范圍及其與十六進制的轉換例子

2019-11-26 14:55:09
字體:
來源:轉載
供稿:網友

float占用4個字節,和int是一樣,也就是32bit。
      第1個bit表示符號,0表示正數,1表示負數,這個很好理解,不用多管。
      第2-9個bit表示指數,一共8為(可以表示0-255),這里的底數是2,為了同時表示正數和負數,這里要減去127的偏移量。這樣的話范圍就是(-127到128),另外全0和全1作為特殊處理,所以直接表示-126到127。
     剩下的23位表示小數部分,這里23位表示了24位的數字,因為有一個默認的前導1(只有二進制才有這個特性)。
     最后結果是:(-1)^(sign) * 1。f * 2^(exponent)
     這里:sign是符號位,f是23bit的小數部分,exponent是指數部分,最后表示范圍是(因為正負數是對稱的,這里只關心正數)
    2^(-126) ~~ 2(1-2^(-24)) * 2^127
    這個還不是float的取值范圍,因為標準中還規定了非規格化表示法,另外還有一些特殊規定。
   
非規格化表示:
    當指數部分全0而且小數部分不全0時表示的是非規格化的浮點數,因為這里默認沒有前導1,而是0。
    取值位0。f * 2^(-126),表示范圍位 2^(-149)~~ (1-2^(-23)) * 2^(-126) 這里沒有考慮符號。這里為什么是-126而不是-127? 如果是-127的話,那么最大表示為
2^(-127)-2^(-149),很顯然2^(-127) ~~2^(-126) 就沒法表示了。
 

其他特殊表示
    1。當指數部分和小數部分全為0時,表示0值,有+0和-0之分(符號位決定),0x00000000表示正0,0x80000000表示負0。
    2。指數部分全1,小數部分全0時,表示無窮大,有正無窮和負無窮,0x7f800000表示正無窮,0xff800000表示負無窮。
    3。指數部分全1,小數部分不全0時,表示NaN,分為QNaN和SNaN,Java中都是NaN。
 
結論:
    可以看出浮點數的取值范圍是:2^(-149)~~(2-2^(-23))*2^127,也就是Float。MIN_VALUE和Float。MAX_VALUE。

PS:float轉16進制,16進制轉float

package com.sondon.dev_soceket.test;   /**  * @Project : 硬件通訊  * @Package : com.sondon.tcpip  * @Class : Test.java  * @Company 廣州訊動網絡科技有限公司  * @Author : 蔡文鋒  * @DateTime:2015年4月2日 上午11:21:53  * @Blog:http://blog.csdn.net/caiwenfeng_for_23  * @Description : { 測試 }  */ public class Test {      public static void main(String[] args) {     String s="3E1E9E9F";     Float value = Float.intBitsToFloat(Integer.valueOf(s.trim(), 16));     System.out.println(value);          Float f=0.15490197f;     System.out.println(Integer.toHexString(Float.floatToIntBits(f)));   } } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永州市| 商洛市| 遂昌县| 长丰县| 锡林郭勒盟| 牡丹江市| 五常市| 上栗县| 新津县| 农安县| 通州区| 北碚区| 七台河市| 铅山县| 上犹县| 安顺市| 长宁区| 三河市| 印江| 英吉沙县| 那曲县| 宝丰县| 周宁县| 宣威市| 玛曲县| 和田市| 营山县| 东乡县| 鄯善县| 枝江市| 安图县| 巴林右旗| 仪陇县| 徐水县| 璧山县| 民勤县| 临朐县| 岳池县| 嘉善县| 宁安市| 长宁县|