程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java中float類型的規模及其與十六進制的轉換例子

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

編輯:關於JAVA

Java中float類型的規模及其與十六進制的轉換例子。本站提示廣大學習愛好者:(Java中float類型的規模及其與十六進制的轉換例子)文章只能為提供參考,不一定能成為您想要的結果。以下是Java中float類型的規模及其與十六進制的轉換例子正文


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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved