2010-02-24 59 views
1

我知道,最小和值是:
分钟:3.362... 10-4932
最大:1.189... 10+4932
(2^14) * log(2) ~ 4932这使我的指数部分。但我找不出尾数。如何计算IEEE扩展双精度的最小值和最大值?

+0

该问题很难阅读,因为旁边的数字太多而没有格式化。你能解决这个问题吗? – Tronic 2010-02-24 02:28:30

+0

@Tronic,这样更好吗? – atoMerz 2012-05-08 12:36:57

回答

0

尾数有一个隐含的开始一点。这样可以避免浪费一位存储位,该位始终为1(除了减少浮点数,这是所有指数位为零时的特殊情况)。

请注意,隐式的第一个数字只能在二进制中使用。例如。在十进制中你可能有3.14e + 2,你不能只删掉第一个数字(3),因为你不知道哪个数字(1-9它已经是这样了)

例如,浮点值seeemmmmm读为(在C语言风格的伪代码)

(s ? -1 : 1) * ((binary)1mmmmm << ((binary)eee - bias)); 

其中偏压为这个特定的浮点类型的常数,使得所有指数值(EEE)可正,000是最负指数。

所以,你可以通过0b111111(比尾数多一个位)计算最大值,这个最大值被指数的最大值(无偏)移动,min imum值与负号相同。

+0

OK,这个IEEE标准的最大值应该是 1.11111 ... 1(64位的后一个周期),二进制格式,几乎是2位十进制。但是2不像上面的1.189。 最小值和最大值似乎有不同的尾数。 P.S.应该是(2^14)* log(2)〜4932 – atoMerz 2010-02-25 03:28:34

相关问题