十进制浮点数加法

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

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. iOS-获取通讯录联系人信息
  2. aix6.1安装oracle 10g总结
  3. 电气论文:基于粒子群算法的梯级水火电力系统优化调度【有代码】
  4. mysql操作语句now_【MySQL数据库开发之二】MySQL 基础语句的书写与操作!
  5. Oracle入门(九A)之用户的权限或角色
  6. 创建一个Java :: Geci生成器
  7. mxnet深度学习(NDArray)
  8. Kotlin学习笔记20 阶段复习2
  9. C/S架构和B/S架构
  10. MOQL—筛选器(Selector)(一)
  11. 创建控制文件副本出现错误ORA-00205: error in identifying control file
  12. 虚拟机配置centos7.5网卡网络
  13. 小米5splus(高配版/全网通)线刷兼救砖_解账户锁_纯净刷机包_教程
  14. 智慧校园人脸识别门禁系统设计方案
  15. java画好看坦克_坦克大战第一节——画出自己的坦克(新手篇)
  16. 传销式招聘!被骗到东南亚的程序员到底有多惨?
  17. 往事如烟 - 老柏1
  18. 一些bugku的题目wp
  19. protobuffer简介
  20. Python基础篇学习

热门文章

  1. Hybrid的配置(二)
  2. 通过https方式连接远程仓库,因修改用户名或密码导致推送本地代码到远程仓库失败的问题解决办法!
  3. Pytorch损失函数篇
  4. bat批处理简单语句学习
  5. 什么是ajax?ajax详解
  6. 用python进行金融市场文本数据的情感计算
  7. mysql 主键值向后递增1_mysql中的主键递增
  8. ios mvvm框架的封装_iOS MVVM架构总结
  9. mysql支持表情输入_mysql支持emoji表情
  10. 戴尔外星人戴尔外星人Alienware m15R7原厂预装win11中文家庭版系统带F12 Support Assist OS Recovery一键还原恢复功能