我是否正确地得出结论:
64位浮点中指数超过52的所有整数都是偶数?例如,如果指数为53
,尾数为0000000000000000000000000000000000000000000000000001
,则数字为100000000000000000000000000000000000000000000000000010
- 以10
结尾。如果尾数为54
,则数字以100
结尾。
我们增加指数的次数越多,无法表示的整数越多 - 对于54
的指数 - 不可能表示一个数字 - 9007199254740993
,其指数为{{ 1}} - 我们无法表示55
个数字(因为我们在尾数中有两个位可以包含01,10,11的组合)。
答案 0 :(得分:2)
64位浮点中指数超过52的所有整数都将 是不是?
是。 F64有52个编码的尾数位,加上一个隐含的位。我们正在谈论一个没有偏见的'指数,因此您的值为2^exp*1.mant
。
想象一下,要将F64转换为整数,尾数将被无偏指数左移。移位52将保证不需要舍入的整数。 53将保证一个偶数,因为你所显示的零移入了。
我们增加指数越多,整数就越多 代表
是的,但这比你描述的要快得多。您的示例值只是第一次出现。在范围(2 ^ 53,2 ^ 54)中,只有偶数可以像你所说的那样表示,在F64中只有一半的整数存在,所以在这个范围内所有2 ^ 52个奇数都没有代表。