因此,对于浮点运算,据我所知,它是学校级数学的衍生物。乘法和除法可以在计算后加上或减去指数。在执行我的代码设计(在纸上)时,我遇到了一些我在下面列出的问题:
添加和/或减法...
我在网上找到了一些东西,但没有任何真正说明如何解决这个问题。现在,从学校成绩数学开始,您必须先对值进行标准化,然后才能对它们进行任何计算。
因此...
2 ^ 3 + 3 ^ 2 = 8 + 9 = 17
这里需要同样的东西吗?
编辑:我向社区道歉,因为我认为问题非常具体。这是使用2的幂,因为当前平台是IA32。我不知道任何以十进制表示浮点数的平台。我使用小数作为例子。第一个问题由Mark B回答:
值得庆幸的是,浮点数都是以2的幂完成的,所以只需将指数归一化。例如使用10科学记数法的力量。
所以现在第二个问题(如上所列)是你为了规范化价值而做的,你必须转移的金额超过了数据类型的空间?换句话说,如果我说...... 32位精度,我必须转移...说35位......让指数匹配,你如何处理这个条件? FPU如何处理它?</ p>
答案 0 :(得分:1)
值得庆幸的是,浮点数都是以2的幂完成的,所以只需将指数归一化。例如使用10科学记数法的力量:
3.1e5 0.031e7
+ 2.96e7 -> + 2.96 e7
-------- -------
2.991e7
答案 1 :(得分:0)
IEE 754浮点数只是浮点数的一种实现。像往常一样,维基百科上有很好的references。
您选择一个基数(通常为2,但IEEE 754也定义基数为10),然后将实数表示为f = sign * significand * base exponent ,其中significand和exponent是两个整数并将其标记为i或-1。具体来说,你有:
有限数,可以是基数2(二进制)或基数10(十进制)。每个有限数由三个整数描述:s =符号(零或一),c =有效数(或'系数'),q =指数。有限数的数值是
(-1)s×c×bq
其中b是基数(2或10),也称为基数。例如,如果基数为10,则符号为1(表示负数),有效数为12345,指数为-3,则数值为-11×12345×10-3 = -1×12345 ×.001 = -12.345。两个无穷大:+∞和-∞。
两种NaN:安静的NaN(qNaN)和信号NaN(sNaN)。 NaN可以携带用于指示NaN源的诊断信息的有效载荷。 NaN的符号没有任何意义,但在某些情况下可能是可预测的。
可以用格式表示的可能有限值由基数b,有效数字中的位数(精度p)和指数参数emax确定:
c必须是0到bp-1范围内的整数(例如,如果b = 10且p = 7则c为0到9999999)
q必须是1-emax≤q+ p-1≤emax的整数(例如,如果p = 7且emax = 96则q为-101到90)。
因此(对于示例参数)可以表示的最小非零正数是1×10-101,最大的是9999999×1090(9.999999×1096),并且整个数字范围是-9.999999× 1096至9.999999×1096。数字-b1-emax和b1-emax(这里,-1×10-95和1×10-95)是最小(幅度)正常数;这些最小数字之间的非零数字称为次正规数。
零值是有效值,有效数为0.这些是有符号零,符号位指定零是+0(正零)还是-0(负零)。
请查看参考页面了解更多详情......