这是对前一段时间已经回答过的问题的一些澄清: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?
答案 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是有效数字的宽度(计算隐含位)。