十进制浮点数加法

首先以手工过程将科学计数法表示的两个十进制数相加:

9.999*10^1 + 1.610 * 10^-1。假设有效位只有4个十进制,且指数为两个十进制数位。

步骤1:为了能让两数相加,我们需对指数较小的小数点进行调整,使1.610 * 10^-1的指数项较大的指数对齐。

1.610 * 10^-1   =  0.1610 * 10^0 = 0.01610 * 10^1

最后边的形式是我们需要的。因为其指数和较大的数9.999*10^1的指数相同。因此,第一步要将较小数的有效位右移,直到其指数和较大数的指数相同。由于我们只能表示4位十进制,故移位后得到的数为

0.016 * 10^1

步骤2:将有效位相加

 9.999
+0.016
——————
10.015

和为10.015*10^1

步骤3:因为和不是规格化的科学记数法表示,因此需要调整:

10.015*10^1 = 1.0015*10^2

因此,在加法后可能需要对和进行移位,使其变为规格化形式,同时相应地调整指数。这个例子中是右移,但如果一个数为正,一个数为负数,则和可能会有许多前导0,从而需要左移。无论指数是增加还是减少,都需要检查上溢或者下溢,必须保证指数能够被固定位数的指数字段所表示。

步骤4:因为我们假设有效位只有4位十进制(不包括符号位),所以需要对结果进行舍入。如:

1.0015*10^2

舍入为4位的十进制数

1.002*10^2

因为小数点后边第4位的数在5和9之间。注意,如果舍入有误,如将1加到了一串9上,则和不能再被规格化,需要再次执行步骤3。

总结:

二进制浮点数加法

尝试将0.5(十进制)和-0.4375(十进制)用二进制相加

首先,看一下这两个数用规格化科学计数法表示的二进制形式,假设保持4位精度:

0.5(十进制) = 1/2  十进制      = 1/(2^1) 十进制    = 0.1 二进制        =0.1 * 2^0 二进制     = 1.000 * 2^-1 二进制
-0.4375(十进制) = -7/16 十进制   = -7/(2^4) 十进制  = -0.0111 二进制  = -0.011*2^0 二进制   = -1.110*2^-2 二进制

步骤1:指数较小的数(-1.11*2^-2  二进制)的有效右移,直到其指数和较大数的指数相匹配:

-1.110* 2^-2 = -0.111*2^-1

步骤2:将有效位相加

-1.110 * 2^-1   +  (-0.111* 2^-1) = 0.001 * 2^-1  二进制

步骤3:将和规格化,并检查上溢和下溢:

0.001 * 2^-1 = 0.010 * 2^-2 = 0.100 * 2^-3 = 1.000*2^-4

127≥-4≥-126 ,没有上溢和下溢。(带偏差的指数为-4+127,即123,其在最小的指数1和最大的指数254之间(未保留的带偏差的指数)。)

步骤4:舍入和:

1.000 * 2^-4 二进制

这个和正好用4位表示,故不需要再舍入,然后

1.000*2^-4 = 0.0001000=0.0001 二进制
=1/(2^4) = 1/16 = 0.0625 十进制

计算机中浮点数加法运算相关推荐

  1. 计算机系统基础实验 - 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示

    实验3 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 实验序号:3 实验名称:同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 适用专业:软件工程 学 时 数:2学时 一.实验目的 1 ...

  2. 计算机中整数加法满足结合律吗

    今天看<程序设计语言概念>(Concepts of Programming Language),第七章"结合性"一节中有这么一段: 某些计算机中的整数加法不具有结合性. ...

  3. 【转】计算机中浮点数的表示

    [转]计算机中浮点数的表示 来自:http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html C/C++浮点数在内存中的存储方 ...

  4. IEEE 754——计算机中浮点数的表示方法

    楔子 #include <iostream> int main(int, char**) {std::cout.precision(20);float a = 123.4567890123 ...

  5. 计算机中浮点数的表示及正负数小数的反码补码

    1. 计算机中浮点数的表示 计算机中浮点数用科学计数法来表示,分尾数.指数.阶码3部分. 阶符:指数的正负号.占1位,负为1正为0. 任意一个二进制数N,N=2P×S,其中S为尾数,P为阶码,阶码为固 ...

  6. 计算机中浮点数表示方法,浮点数的表示方法

    <浮点数的表示方法>由会员分享,可在线阅读,更多相关<浮点数的表示方法(2页珍藏版)>请在人人文库网上搜索. 1.浮点数的表示方法 一.浮点数表示 一个数的浮点形式(设基数是2 ...

  7. 计算机中浮点数的表示方法

    计算机中浮点数的表示方法 http://cenalulu.github.io/linux/about-denormalized-float-number/ 可以在这个网址验证自己的想法 https:/ ...

  8. 计算机中浮点数的表示,浮点数在计算机中的表示

    浮点数在计算机中的表示 最后编辑于:2010-4-13 计算机中数字是以0和1二进制保存的,我们熟悉的是整数的如何在计算机中表示,那么浮点数是如何表示的呢? 一.    转换 我们先来看看如何将十进制 ...

  9. 计算机中的位运算—正数,负数,原码,反码,补码

    计算机中正数是按照原码存储的,负数是按照补码存储的 下面举例 1 和-1,按照8位存储. : 正数:正数的原码,反码,补码都和原码一样,即正常的二进制表示. 负数:原码就是正常的二进制表示.反码就是原 ...

最新文章

  1. 流程图虚线箭头的意思_Ai篇NO.3: 怎样画出不死板的箭头?
  2. nginx的内存池及内存管理
  3. 只有失去了,才知道珍惜!!!
  4. DOCTYPE声明对JS获取窗口宽度和高度的影响【转】
  5. Windows Socket 最大连接数
  6. MySQL中show语法
  7. Hadoop分布式系统的安装部署
  8. 万亿级流量高可用延时服务架构设计
  9. Tomcat的BIO、NIO、ARP模式
  10. 常用的sql语句整理 增删改查
  11. 你理解的精益可能是错的!——从源头重新解读精益
  12. 《软考系统架构师》(二、信息系统基础知识)
  13. 二本学历,3年软件测试点点点,25K入职阿里巴巴
  14. 【读书笔记】好好思考-成甲
  15. 【题解】【AcWing】1635. 最大团
  16. html 圆圈透明 其他不透明,Javascript HTML5 Canvas绘制透明圆圈
  17. 降价再扩围 中国超三成大中城市二手房价环比下跌
  18. 资深HR告诉你,面试中你不知道的那些秘密!
  19. python错误提示库没有注册_无法访问计算机XXXX。错误是:库没有注册
  20. 【对标TensorFlow】阿里公开内部超大规模分布式机器学习平台,对此你怎么看?

热门文章

  1. mybatis mysql自增主键_mybatis 自增主键配置
  2. ~/bin/sh: xxx: not found
  3. IPFS矿业巨潮,MEM中东矿业将建全球最大的信息储存服务产业园之一
  4. 软考-知识产权-一篇通过
  5. 2019年,计算机视觉领域,你推荐哪些综述性的文章?
  6. JavaScript之入门学习风云(4)
  7. 六顶思维帽的思考,敏捷开发?——By Me
  8. 思维意识_六顶思维帽_红帽思维
  9. rac 火星舱如何备份oracle_ORACLE RAC数据库的备份与恢复(1)
  10. 关于微信编辑器,我有话说~~~