Float.floatToIntBits(float value) 是什么意思? Float.floatToIntBits(float value) 这个方法是什么意思?即便看了文档里面的介绍, 还是一头雾水.哪位师兄能点破一下? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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表示尾数。 按照IEEE 754标准,32位浮点数在计算机中二进制存储形式共三部分:S(1位,符号) E(8位,阶码) M(23位,尾数)给你举个例子吧,Float.floatToIntBits(20.5f)按照如下方式计算:20.59D=10100.1B=1.01001*2^4B 指数e=4S=0-->正数 E=4+127=131D=10000011B-->真实指数e变成阶码E时需加127 M=01001B则32位2进制存储形式为:0 10000011 01001000000000000000000转换成10进制即1101266944 是不是这样:返回的值是 这个浮点数的位布局的整数值?Float 是4位的, 刚好Int 也是4位, 是不是把这个Float 的位布局看作一个整数, 将这个整数值返回?像 Double.doubleToLongBits(), 他返回的是一个 long 值, 因为 Double 是用8个字节来存储, long 刚好也是8个字节. 这个是从Float里面看到的方法,因为想看看Float怎么实现 hashCode() 方法, 发现里面用到这个方法, 所以想了解一下, 明白了.非常感谢各位! Java 中怎么实现一次编译,到处运行? 字符串替换问题? 高手再进啦,谢谢! 找女朋友....... java中的Collection类是什么意思啊? 送分题,给点建议吧 在线等待!急,请问jbuilder里怎么自动生成get和set方法亚? 初学java 用JBuilder7做Applet小程序的问题?? 能否讲一下CMP Bean, BMP Bean, Session Bean的本质区别 设置环境变量的问题,小妹在线等待,多谢 50分求解:窗口状态改变‘后’调用监听事件有吗? jvm是如何找到dt.jar的,它是用哪个类加载器加载的
第 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表示尾数。
给你举个例子吧,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
Float 是4位的, 刚好Int 也是4位, 是不是把这个Float 的位布局看作一个整数,
将这个整数值返回?像 Double.doubleToLongBits(), 他返回的是一个 long 值,
因为 Double 是用8个字节来存储, long 刚好也是8个字节.
因为想看看Float怎么实现 hashCode() 方法, 发现里面用到这个方法, 所以想了解一下, 明白了.
非常感谢各位!