资讯专栏INFORMATION COLUMN

【深入浅出-JVM】(3):浮点数

Darkgel / 1949人阅读

摘要:浮点数推导二进制转十进制如果指数位不全为则尾数位首位,如果指数位全为,则尾数位首位十进制十进制转二进制指数为,则指数段的值为因为不全为尾数部分首位的去掉,然后右侧补全负数指数段的值为尾数段为因为不全为尾数部分首位的去掉然后右侧补

-5 浮点数推导 二进制转十进制

1 10000001 01000000000000000000000

1 10000001 101000000000000000000000 如果指数位不全为 0 则尾数位首位+1 ,如果指数位全为 0,则尾数位首位+0

十进制 = -1 2^(129-127) (1 2^0 + 1 2^-2) = -1 4 1.25 = -5

十进制转二进制

5 = 101(B) = 1.01 * 2^2 指数为 2,则指数段的值为 2+127 = 129 = 10000001 因为不全为 0 尾数部分首位的 1 去掉,然后右侧补全 0

1 负数

1 10000001 指数段的值为 2+127=129

1 10000001 101 尾数段为 101

1 10000001 01 因为不全为 0 尾数部分首位的 1 去掉

1 10000001 01000000000000000000000 然后右侧补全 0,尾数部分一共23 位

十进制(整数)转二进制(整数)

除2取余, (直到商为 0) ,逆序

789=1100010101(B)

394 1

197 0

98 1

49 0

24 1

12 0

6 0

3 0

1 1

0 1 (最终 商 < 1)

1100010101

推理: A = abcdef(B)

A = f 2 ^ 0 + e 2 ^ 1+ d 2 ^ 2 + c 2 ^ 3+ b 2 ^ 4 + a 2 ^ 5

A/2 = e 2 ^ 0+ d 2 ^ 1+ c 2 ^ 2 + b 2 ^ 3 + a * 2 ^ 4 除以 2 留余数得到 f

.... 除以 2 留余数得到 d

..... 除以 2 留余数得到 a

反过来写就是 abcdef

十进制纯小数转换成二进制纯小数

乘2 取整,直到小数部分为 0(或者达到所要求的精度…),顺序排列

0.8125 = (0.1101)(B)

1.6250 1

1.25 1

0.5 0

1.0 1

十进制小数转换成二进制小数

整数部分与小数部分合并

(789.8125) = 1100010101.1101(B)

float 特殊值

|含义|数值|

|正无穷 | 0 11111111 00000000000000000000000 |

|负无穷 | 1 11111111 00000000000000000000000|

|NaN | 0 11111111 10000000000000000000000|

|最大浮点数 | 0 11111110 11111111111111111111111|1.11111111111111111111111 * 2^(254-127)

|最小规范化正浮点数 | 0 00000001 00000000000000000000000|1.0 * 2^1-127|

|最小正浮点数 | 0 00000000 00000000000000000000000|

|0 | 0 00000000 00000000000000000000000|

注意

float最大精度 小数点后 6 位

浮点数 0.99 根本没办法用二进制表示 ,无穷多的 11111 只有 0.5 倍数的可以被二进制科学计数法表示

感谢您的耐心阅读,如果您发现文章中有一些没表述清楚的,或者是不对的地方,请给我留言,您的鼓励是作者写作最大的动力。

作 者 : @mousycoder

原文出处 : http://mousycoder.com/thinkin...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75381.html

相关文章

  • 【Java笔记】基础数据类型

    摘要:的基础类型主要分为四大类,八小类。四大类分别为整数型,浮点数类型,布尔类型字符类型。是最常用的整数数据类型。布尔类型布尔类型有两个值和,用来判定的逻辑条件。基础类型的数据,直接存放在栈内存。基础类型的方法传参是通过值拷贝的方法。 Java的基础类型主要分为四大类,八小类。四大类分别为整数型,浮点数类型,布尔类型,字符类型。其中整数型有四中,容量从小到大分别为:byte,short,in...

    PingCAP 评论0 收藏0
  • 深入了解 Number 类型

    摘要:下面就让我们来一起深入了解下,为以后的策马奔腾做好铺垫。整数整数,可以通过十进制,八进制,十六进制的字面值来表示。对前面定义的八进制和十六进制数值进行运算浮点数浮点数其实就是我们通常所说的小数,所以一定有个小数点。 Number 类型作为 JS 的基本数据类型之一,被应用在程序中的各种场景,其重要性就如数字对于我们日常生活。下面就让我们来一起深入了解下,为以后的策马奔腾做好铺垫。 定义...

    scwang90 评论0 收藏0
  • 字节码及ASM使用

    摘要:字节码及使用什么是字节码机器码机器码是可直接解读的指令。字节码的执行操作,指的就是对当前栈帧数据结构进行的操作。动态链接每个栈帧指向运行时常量池中该栈帧所属的方法的引用,也就是字节码的发放调用的引用。 字节码及ASM使用 什么是字节码? 机器码机器码(machine code)是CPU可直接解读的指令。机器码与硬件等有关,不同的CPU架构支持的硬件码也不相同。 字节码字节码(byte...

    hearaway 评论0 收藏0
  • 正确认识点数

    摘要:浮点数在计算机中是根据二进制浮点数算数标准储存的。尤其在我们日常工作中,不要比较浮点数的大小,如果需要精确的比较计算,请使用系列函数。还有一点,浮点数不准确和没有任何关系,不背这个锅。 大家在日常开发中,必然使用过浮点数,也会发现浮点数不是精确的,那究竟是什么原因造成的呢? 奇怪的结果 var_dump((1-0.9) == 0.1); //输出:bool(false) 很奇怪吧!1-...

    warkiz 评论0 收藏0
  • [零基础学python]啰嗦的除法

    摘要:补充一个资料,供有兴趣的朋友阅读浮点数算法争议和限制说明以上除法规则,是针对,在中,将和等同起来了。比如下面的例子不啰嗦了,实验一个注意了,引用了一个模块之后,再做除法,就不管什么情况,都是得到浮点数的结果了。 除法啰嗦的,不仅是python。 整数除以整数 看官请在启动idle之后,练习下面的运算: >>> 2/5 0 >>> 2.0/5 0.4 >>> 2/5.0 0.4 >...

    james 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<