Float.floatToIntBits(float value) 这个方法是什么意思?
即便看了文档里面的介绍, 还是一头雾水.哪位师兄能点破一下?

解决方案 »

  1.   

    public static int floatToIntBits(float value)根据 IEEE 754 的浮点“单一形式”中的位布局,返回指定浮点值的表示形式。 
    第 31 位(掩码 0x80000000 选定的位)表示浮点数字的符号。第 30-23 位(掩码 0x7f800000 选定的位)表示指数。第 22-0 位(掩码 0x007fffff 选定的位)表示浮点数字的有效位数(有时也称为尾数)。 
    如果参数为正无穷大,则结果为 0x7f800000。 
    如果参数为负无穷大,则结果为 0xff800000。 
    如果参数为 NaN,则结果为 0x7fc00000。 
    在所有情况下,结果都是一个整数,在将其赋予 intBitsToFloat(int) 方法时,将生成一个与 floatToIntBits 的参数相同的浮点值(除所有 NaN 值被折叠成一个“规范的”NaN 值之外)。 另外需要知道的是,float类型占用4个字节,从最低位(最右边)到最高位(最左边)的编号是从0-31。这样的话,上面的解释就容易看懂了。也就是说,转换成的32个0、1字符串中,31号表示符号,30-23表示指数,22-0表示尾数。
      

  2.   

    按照IEEE 754标准,32位浮点数在计算机中二进制存储形式共三部分:S(1位,符号) E(8位,阶码) M(23位,尾数)
    给你举个例子吧,Float.floatToIntBits(20.5f)按照如下方式计算:
    20.59D=10100.1B=1.01001*2^4B 指数e=4
    S=0-->正数  E=4+127=131D=10000011B-->真实指数e变成阶码E时需加127  M=01001B
    则32位2进制存储形式为:0 10000011 01001000000000000000000
    转换成10进制即1101266944
      

  3.   

    是不是这样:返回的值是 这个浮点数的位布局的整数值?
    Float 是4位的, 刚好Int 也是4位, 是不是把这个Float 的位布局看作一个整数, 
    将这个整数值返回?像 Double.doubleToLongBits(), 他返回的是一个 long 值, 
    因为 Double 是用8个字节来存储, long 刚好也是8个字节.
      

  4.   

    这个是从Float里面看到的方法,
    因为想看看Float怎么实现 hashCode() 方法, 发现里面用到这个方法, 所以想了解一下, 明白了.
    非常感谢各位!