问题描述
- 浮点数是用什么进行运算的????
-
浮点数是用补码的方法进行减法运算的吗?
若是,那么他是怎么算的,浮点数中存在着阶码,转为补码的时候,阶码也要跟着反码加一之类的吗?
若不是,那么他是怎么进行运算的?
解决方案
另外要注意一个问题,就是浮点数计算是允许有许可范围内的误差的。换一句话说,两个不同的计算机,可能对于相同的输入,产生的结果是不同的。当然这种不同必须在限定的范围内。
曾经intel发布过一些pentium处理器,其中的浮点误差远远超过了标准的规定,最后intel不得不召回了这些处理器(我还收藏了一块有问题的pentium)。
为什么不同的处理器得到的结果不同呢?因为实现方法不同。既然不同的处理器实现的方法都不同,你讨论这种问题有什么意义呢?
人计算浮点数,只要按照人的方法计算好了。
解决方案二:
对于80486(SX除外)以前的处理器,如果没有x87浮点协处理器,就是用软件去算的,尾数按照整数去算,然后再把进位算到阶码上。
对于此后的处理器,都是硬件直接实现的。
解决方案三:
符号表正负数,原码表尾数,移码表指数
浮点数 是二进制 科学记数法 表示的数。
float,double 都有隐藏位,
浮点数,有两种格式
1种是 绝对值极小的浮点数,隐藏位 为0,指数固定 这是非规格化的浮点数 表示为二进制 (+-)0.X E C
1种是 规格化浮点数 隐藏位为1 指数根据浮点数的值而变动 表示为二进制 (+-)1.X E e ;
另外还有一些特殊编码,表示 0,inf (无穷大),Nan (不是一个数)登特殊值
解决方案四:
http://www.cnblogs.com/xkfz007/archive/2012/02/27/2370357.html
解决方案六:
浮点数的运算
浮点数运算注意事项
Java浮点数精确运算
时间: 2024-09-14 15:40:05