作者回复: s = 0, e = 0 的时候,无论 f 是多少,都是表示浮点数 0
f = 5,底数是1.5 而不是 0.5
作者回复: 最大的数,会是小数位全部为1,指数位二进制表示成127
表示成二进制就是 1.11111... ^(2^127)
差不多就是1.9999999 ^(2^127)
差不多正好是 3.4028235 x (10 ^ 38)
最小的数就是 1.000..... ^ (2^-126)
差不多就是 1.0000 ^ (2^-126)
差不多正好就是 1.17549435 x (10^-38)
作者回复: 👍
其实这一讲还有下篇,具体s, e, f怎么计算大家可以看一下周五的下篇,以及里面给的交互演示网页。
作者回复: 底数就是 1.小数位,也就是1.f。因为是二进制,所以底数的“整数”部分可以认为必然是1啊,不存在其他情况
作者回复: 愤怒的虾干同学你好,
toHexString表示的是把10进制转换成16进制表示。
0.9999999的小数部分转换成16进制,采用的是 乘以2 然后如果大于1去减1这样的操作过程。你试一下就知道就会是1111111...因为一共有23位长,所以最后有一位可能是0,所以就是 fffffe,就是表示0.999999
以1.5f为例,小数部分是0.5
乘以2就是1.0,减1就是0
那么0.5表示成2进制就是 0.1000000
4位表示1个16进制数第一位就是8,后面都是0会截断显示。
你可以照着接下来第16讲的转换过程试一下,看看小数部分会变成什么样子。
然后把二进制转换成16进制,就能知道为什么了。
作者回复: 任雪龙同学你好,
这个在第16讲里面会讲解一下计算过程,因为一讲的篇幅有限,所以没有放在15讲里面讲完。
作者回复: 👍
作者回复: 对,整个是浮点数的标准
https://zh.wikipedia.org/zh-hans/IEEE_754
作者回复: 这个想法不错,我看是否搞一章加餐
作者回复: 👍加油,又学会一点新知识呀