可以存储在double中的最大整数,以便可以准确地存储所有小于的整数

时间:2015-10-08 19:44:01

标签: binary floating-point double precision ieee-754

这是对前一段时间已经回答过的问题的一些澄清:biggest integer that can be stored in a double

最佳答案提到"最大的整数,使得它和所有较小的整数可以存储在IEEE 64位双精度而不会丢失精度。一个IEEE 64位双尾有52位尾数,所以我认为它是2 ^ 53:

,因为:

  • 2 53 + 1无法存储,因为开头的1和末尾的1之间有太多的零。

  • 可以存储少于2 53 的任何内容,其中52位明确存储在尾数中,然后指数实际上为您提供另一个。

  • 2 53 显然可以存储,因为它的功率很小。

有人可以澄清第一点吗?他的意思是什么?他是在谈论例如,如果它是一个4位数1000 + 0001,你不能用4位存储它? 2 53 只是第一位1,其余0位是对的?为什么你不能在不失精度的情况下添加1?

另外,"最大的整数,使得它和所有较小的整数都可以存储在IEEE"中。是否有一些通用规则,如果我想找到最大的n位整数,使得它和所有较小的整数都可以存储在IEEE中,我可以简单地说它是2 n 吗?例如,如果我找到最大的4位整数,以便它和它下面的所有整数都可以表示,它将是2 ^ 4?

1 个答案:

答案 0 :(得分:0)

  

他是在谈论例如,如果它是4位数1000 + 0001,你不能将它存储在4位?

不,他说你不能以3比特存储它。使用通常的二进制表示法。

  

2 53 只是第1位,其余0位是对的?

是的,1,2,4,...,2 53 ,2 54 ,2 55 ,......,2 < sup> 123 ,2 124 ,......还有0.125。

这是我们正在讨论的浮点数。 2 53 只是一个隐式1,所有显式有效位0,是,但它不是唯一具有此属性的数字。关键的特性是代表2 53 的ULP是2.所以2 53 可以表示为范围内的2的所有幂,并且2 53 +1不能,因为ULP在那个社区太大了。

  

另外,“最大的整数使得它和所有较小的整数都可以存储在IEEE中”。是否有一些通用规则,如果我想找到最大的n位整数,使得它和所有较小的整数都可以存储在IEEE中,我可以简单地说它是2 n 吗?

是的,在二进制IEEE 754浮点数中,所有“最大整数,使得它和所有较小的整数都可以存储”是2的幂,特别是2 n 其中n是有效数字的宽度(计算隐含位)。