我正在使用浮点算法,因为我很想理解这个主题!
我知道这些数字可以用科学记数法表示。
因此,对于这两个数字,指数应该如下所示:
非规范化数: 11 .... 11所以(1 + 1/2 + 1/2 ^ 2 + ... + 1/2 ^ 52)* 2 ^ 1023
归一化数字: 11 .... 11 so(1 + 1/2 + 1/2 ^ 2 + ... + 1/2 ^ 52)* 2 ^ 1024
但是,我不确定这是否正确?
我真的很感谢你的回答!
PS .:在维基百科上给出的数字! 但是,我不知道他们是怎么想出来的......
如您所知,双精度格式如下所示:
理解非规范化数字的关键在于它们实际上并不是浮点数,而是使用一种使用“常规”格式中未使用的表示法的定点微格式。
正态浮点数的形式如下: m*2^e其中e是从上面的指数字段中减去偏差而得到的, m是1和2之间的数字,其中给出'二元'点之后的位由上面的分数。 二进制前面的1不存储,因为它已知始终为1.指数字段的值为1到2046.值0(全零)和2047(全1)保留用于特殊用途。
指数字段中的所有元素意味着我们有无穷大或NaN(非数字)。
所有零表示我们正在处理非正规浮点数。 这些仍然是相同的形式, m*2^e ,但是m和e的值是不同的。 m现在是一个介于0和1之间的数字,所以在二进制数的前面有一个0,而不是正常数的1。 e始终具有相同的值:-1022。 所以指数是一个常量,这就是为什么我早些时候称它为定点格式的原因。
所以,每个值的最大可能值是:
正常:(1 + 1/2 + 1/2 ^ 2 + ... + 1/2 ^ 52)* 2 ^ 1023 =(2-2 ^ -52)* 2 ^ 1023 = 1.797 ... e + 308
Denormal:(0 + 1/2 + 1/2 ^ 2 + ... + 1/2 ^ 52)* 2 ^ -1022 =(1-2 ^ -52)* 2 ^ -1022 = 2.225 ... e -308
链接地址: http://www.djcxy.com/p/85533.html