浮点数运算

浮点数的运算有三个步骤,这里从http://rangercyh.blog.51cto.com/1444712/1313162

转载这三个步骤

1、对阶

(就是使两个浮点数的两个指数部分相同,规定小数向大数对齐,因为如果是大数向小数对齐,那么就要左移大数的尾数部分,就有可能会丢失大数的最高有效位;小数向大数对齐是右移小数的尾数部分,而丢失小数的那点精度对结果来说是无关紧要的)

2、尾数相加

(为什么是相加而不是相加减,因为减法被转成加法做了,这个应该好理解,计算机里只有累加器)

3、对结果规格化

(这个可能比较生疏,其实也很好理解,就像我们十进制的科学记数法一样,我们规定尾数为 [1, 10) 之间的数,二进制里面我们如果尾数不是 1 开头,我们就移动成 1 开头,然后省去存 1,比如计算结果尾数为 0010,那么我就把尾数左移 3 位得到 1000, 然后省去 1,只存 000,当然这个过程指数也会变)

4、舍入处理

(这个不多说,就那个意思)

下面举例子

18.75+1.5

1.875单精度二进制表示10010.111=1.0010111*2^4

1.5单精度二进制表示为1.1

第一步对阶

18.75的指数为131-(2^(8-1) - 1)=4,即131

1.5的指数为127-(2^(8-1) - 1)=0,即127

0 10000011  +131

0 01111111 +127

1 10000001  -127 

131-127=0 00000100=4

第二步

尾数相加

进行对阶后1.5的小数部分变为00001,相加后变0.0011011,舍入后为0.00111,指数部分为4

此时,合数为(1+1/8+1/16+1/32) * 2^4=39/2=

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值