计算机中浮点数加法运算
十进制浮点数加法
首先以手工过程将科学计数法表示的两个十进制数相加:
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 十进制
计算机中浮点数加法运算相关推荐
- 计算机系统基础实验 - 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示
实验3 同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 实验序号:3 实验名称:同符号浮点数加法运算/无符号定点数乘法运算的机器级表示 适用专业:软件工程 学 时 数:2学时 一.实验目的 1 ...
- 计算机中整数加法满足结合律吗
今天看<程序设计语言概念>(Concepts of Programming Language),第七章"结合性"一节中有这么一段: 某些计算机中的整数加法不具有结合性. ...
- 【转】计算机中浮点数的表示
[转]计算机中浮点数的表示 来自:http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html C/C++浮点数在内存中的存储方 ...
- IEEE 754——计算机中浮点数的表示方法
楔子 #include <iostream> int main(int, char**) {std::cout.precision(20);float a = 123.4567890123 ...
- 计算机中浮点数的表示及正负数小数的反码补码
1. 计算机中浮点数的表示 计算机中浮点数用科学计数法来表示,分尾数.指数.阶码3部分. 阶符:指数的正负号.占1位,负为1正为0. 任意一个二进制数N,N=2P×S,其中S为尾数,P为阶码,阶码为固 ...
- 计算机中浮点数表示方法,浮点数的表示方法
<浮点数的表示方法>由会员分享,可在线阅读,更多相关<浮点数的表示方法(2页珍藏版)>请在人人文库网上搜索. 1.浮点数的表示方法 一.浮点数表示 一个数的浮点形式(设基数是2 ...
- 计算机中浮点数的表示方法
计算机中浮点数的表示方法 http://cenalulu.github.io/linux/about-denormalized-float-number/ 可以在这个网址验证自己的想法 https:/ ...
- 计算机中浮点数的表示,浮点数在计算机中的表示
浮点数在计算机中的表示 最后编辑于:2010-4-13 计算机中数字是以0和1二进制保存的,我们熟悉的是整数的如何在计算机中表示,那么浮点数是如何表示的呢? 一. 转换 我们先来看看如何将十进制 ...
- 计算机中的位运算—正数,负数,原码,反码,补码
计算机中正数是按照原码存储的,负数是按照补码存储的 下面举例 1 和-1,按照8位存储. : 正数:正数的原码,反码,补码都和原码一样,即正常的二进制表示. 负数:原码就是正常的二进制表示.反码就是原 ...
最新文章
- 流程图虚线箭头的意思_Ai篇NO.3: 怎样画出不死板的箭头?
- nginx的内存池及内存管理
- 只有失去了,才知道珍惜!!!
- DOCTYPE声明对JS获取窗口宽度和高度的影响【转】
- Windows Socket 最大连接数
- MySQL中show语法
- Hadoop分布式系统的安装部署
- 万亿级流量高可用延时服务架构设计
- Tomcat的BIO、NIO、ARP模式
- 常用的sql语句整理 增删改查
- 你理解的精益可能是错的!——从源头重新解读精益
- 《软考系统架构师》(二、信息系统基础知识)
- 二本学历,3年软件测试点点点,25K入职阿里巴巴
- 【读书笔记】好好思考-成甲
- 【题解】【AcWing】1635. 最大团
- html 圆圈透明 其他不透明,Javascript HTML5 Canvas绘制透明圆圈
- 降价再扩围 中国超三成大中城市二手房价环比下跌
- 资深HR告诉你,面试中你不知道的那些秘密!
- python错误提示库没有注册_无法访问计算机XXXX。错误是:库没有注册
- 【对标TensorFlow】阿里公开内部超大规模分布式机器学习平台,对此你怎么看?
热门文章
- mybatis mysql自增主键_mybatis 自增主键配置
- ~/bin/sh: xxx: not found
- IPFS矿业巨潮,MEM中东矿业将建全球最大的信息储存服务产业园之一
- 软考-知识产权-一篇通过
- 2019年,计算机视觉领域,你推荐哪些综述性的文章?
- JavaScript之入门学习风云(4)
- 六顶思维帽的思考,敏捷开发?——By Me
- 思维意识_六顶思维帽_红帽思维
- rac 火星舱如何备份oracle_ORACLE RAC数据库的备份与恢复(1)
- 关于微信编辑器,我有话说~~~