所有指数超过 52 的整数在 64 位浮点数中都是偶数吗
Are all integers with exponent over 52 are even in 64 bit floating point
我的结论是否正确:
64位浮点数中指数大于52的整数都是偶数?例如,如果指数为 53
,尾数为 0000000000000000000000000000000000000000000000000001
,则数字为 100000000000000000000000000000000000000000000000000010
- 以 10
结尾。如果尾数是 54
,则数字以 100
结尾。
我们增加的指数越多,就越不能表示整数-对于54
的指数-不可能表示一个数-9007199254740993
,用55
的指数 - 我们不能表示 3
数字(因为我们在尾数中遗漏了两位,可以有 01,10,11 的组合)。
all integers with exponent over 52 in the 64 bit floating point will
be even?
是的。 F64 有 52 个编码尾数位,外加一个隐含位。我们讨论的是 'unbiased' 指数,因此您的值为 2^exp*1.mant
。
假设要将 F64 转换为整数,尾数将左移无偏指数。移动 52 将保证不需要四舍五入的整数。 53 将保证偶数,因为零会像您显示的那样移入。
the more we increase the exponent, the more integer numbers can not be
represented
是的,但这比您描述的要快得多。您的示例值只是第一次出现。在 (2^53, 2^54) 范围内,如您所说,只能表示偶数,F64 中只存在所有整数的一半,因此在该范围内,所有 2^52 奇数整数都没有表示。
我的结论是否正确:
64位浮点数中指数大于52的整数都是偶数?例如,如果指数为
53
,尾数为0000000000000000000000000000000000000000000000000001
,则数字为100000000000000000000000000000000000000000000000000010
- 以10
结尾。如果尾数是54
,则数字以100
结尾。我们增加的指数越多,就越不能表示整数-对于
54
的指数-不可能表示一个数-9007199254740993
,用55
的指数 - 我们不能表示3
数字(因为我们在尾数中遗漏了两位,可以有 01,10,11 的组合)。
all integers with exponent over 52 in the 64 bit floating point will be even?
是的。 F64 有 52 个编码尾数位,外加一个隐含位。我们讨论的是 'unbiased' 指数,因此您的值为 2^exp*1.mant
。
假设要将 F64 转换为整数,尾数将左移无偏指数。移动 52 将保证不需要四舍五入的整数。 53 将保证偶数,因为零会像您显示的那样移入。
the more we increase the exponent, the more integer numbers can not be represented
是的,但这比您描述的要快得多。您的示例值只是第一次出现。在 (2^53, 2^54) 范围内,如您所说,只能表示偶数,F64 中只存在所有整数的一半,因此在该范围内,所有 2^52 奇数整数都没有表示。