Float.floatToIntBits(float value) 这个方法是什么意思?
即便看了文档里面的介绍, 还是一头雾水.哪位师兄能点破一下?
即便看了文档里面的介绍, 还是一头雾水.哪位师兄能点破一下?
解决方案 »
- Java log4j报错
- java 动态数组问题
- 利用正则表达式去除()中的内容
- map和hashmap中的区别
- [求助]Java源文件编码无论是什么,虚拟机都能自动编译通过?
- java 如何在窗体最小化时实现状态栏闪动效果?就像某一个窗体触发某一事件,或就像QQ接收到对方发送的消息时,状态栏的最小化图标闪动的效果
- 请大家推荐几个适合初学者看的JAVA视频教程
- 哪儿能得到JAVA的API参考手册(电子版),最好是中文的!
- 如何将unicode的字符转换为ascii型的字符?
- 为什么在客户机上显示不了applet?
- 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() 方法, 发现里面用到这个方法, 所以想了解一下, 明白了.
非常感谢各位!