1. 浮点加减法的运算步骤

  前面已讲到,浮点数经常被写成如下的形式:
        X = Mx * 2Ex

  其中Mx为该浮点数的尾数,一般为绝对值小于1的规格化的二进制小数,机器中多用原码(或补码)形式表示。Ex为该浮点数的阶码,一般为二进制整数,机器中多用移码(或补码)表示,给出的是一个指数的幂,而该指数的底常用2、8或16,我们这里先以2为底作例子进行讨论。

  浮点加减法的运算步骤
  假定有两个浮点数
     X = Mx * 2Ex , Y = My * 2Ey

  1. 实现X±Y运算,要用如下五步完成:
  (1) 对阶操作,即比较两个浮点数的阶码值的大小.求△E=Ex-Ey。当其不等于零时,首先应使两个数取相同的阶码值。其实现方法是,将原来阶码小的数的尾数右移|△E|位,其阶码值加上|△E|,即每右移一次尾数要使阶码加1,则该浮点数的值不变(但精度变差了)。尾数右移时,对原码形式的尾数,符号位不参加移位,尾数高位补0;对补码形式的尾数,符号位要参加右移并使自己保持不变。为减少误差,可用
  另外的线路,保留右移过程中丢掉的一到几位的高位值,供以后舍入操作使用。

  (2) 实现尾数的加(减)运算,对两个完成对阶后的浮点数执行求和(差)操作。

  (3) 规格化处理,若得到的结果不满足规格化规则,就必须把它变成规格化的数,对双符号位的补码尾数来说,就必须是001××…×或
 
  110××…×的形式。这里的规格化处理规则是:
  .当结果尾数的两个符号位的值不同时,表明尾数运算结果溢出。此时应使结果尾数右移一位,并使阶码的值加1,这被称为向右规格化,简称右规。

  .当尾数的运算结果不溢出,但最高数值位与符号位同值,表明不满足规格化规则,此时应重复地使尾数左移、阶减减1,直到出现在最高数值位上的值与符号位的值不同为止,这是向左规格化的操作,简称左规。

  (4) 舍入操作。在执行对阶或右规操作时,会使尾数低位上的一位或多位的数值被移掉,使数值的精度受到影响,可以把移掉的几个高位的值保存起来供舍入使用。舍入的总的原则是要有舍有入,而且尽量使舍和入的机会均等,以防止误差积累。常用的办法有"0"舍"1"入法,即移掉的最高位为1时 则在尾数末位加1;为0时则舍去移掉的数值。该方案的最大误差为2-(n+1)。这样做可能又使尾数溢出,此时就要再做一次右规。另一种方法 "置1"法,即右移时,丢掉移出的原低位上的值,并把结果的最低位置成1。该方案同样有使结果尾数变大或变小两种可能。即舍入前尾数最低位已为0,使其变1,对正数而言,其值变大,等于最低位入了个1。若尾数最低位已为1,则再对其置1无实际效用,等于舍掉了丢失的尾数低位值。

  (5) 判结果的正确性,即检查阶码是否溢出。浮点数的溢出是以其阶码溢出表现出来的。在加减运算真正结束前,要检查是否产生了溢出,若阶码正常,加(减)运算正常结束;若阶码下溢,要置运算结果为浮点形式的机器零,若上溢,则置溢出标志。


图2.21 规格化浮点加减运算流程
  看一个浮点数加法运算的实例。
  假定 X=2010 * 0.11011011, Y=2100 * (-0.10101100)则它们的浮点表示分别为
         阶符  阶码  数符  尾数
     [X] = 00   010   00  11011011
     [Y] = 00   100   11  01010100
           补码      补码

  执行X+Y的过程如下:
  (1)求阶差和对阶
   △ E = Ex-Ey = [Ex] +[-Ey] = 00 010 + 11 100 = 11 110即△E 为-2, 
X的阶码小,应使Mx右移两位,Ex加2, 得[X] = 00 100 00 00110110 11

  (2)尾数求和
     00 00110110
    + 11 01010100
    
     11 10001010

  (3)规格化处理
  结果的符号位与最高数值位同值,应执行左规处理,结果为11 00010101 10, 阶码为00 011。

  (4)舍入处理
  采用0舍1入法处理,则有
     11 00010101
    +      1
    
     11 00010110

  (5)判溢出
  阶码符号位为00.不溢出,故得最终结果为 X+Y = 2011 *(-0.11101010)

ref: http://comic.sjtu.edu.cn/thucs/GD_jsj_015b/text/ch02/se05/part1/r2_5_1_1.htm

浮点数加减法的运算步骤相关推荐

  1. c语言 浮点数的加减乘除,浮点数的加减乘除运算步骤

    1.浮点加减法的运算步骤 设两个浮点数 X=Mx※2Ex Y=My※2Ey 实现X±Y要用如下5步完成: ①对阶操作:小阶向大阶看齐 ②进行尾数加减运算 ③规格化处理:尾数进行运算的结果必须变成规格化 ...

  2. 计算机内部浮点数表示方法以及计算方式AND计算机内部浮点数加减法运算规则和步骤(包含实例)(32位为例)

    计算机内部浮点数表示方法以及计算方式AND计算机内部浮点数加减法运算规则和步骤(包含实例)(32位为例) 一. 将215642.36421转换为浮点数表示格式 1.首先将整数部分转变为2进制: 215 ...

  3. (209)浮点数运算步骤

    (209)浮点数运算步骤 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)浮点数运算步骤 5)技术交流 6)参考资料 2 FPGA入门与提升课程介绍 1)FPGA入门 ...

  4. python浮点数类型与数学_Python3标准库:decimal定点数和浮点数的数学运算

    1. decimal定点数和浮点数的数学运算 decimal模块实现了定点和浮点算术运算,使用的是大多数人所熟悉的模型,而不是程序员熟悉的模式(即大多数计算机硬件实现的IEEE浮点数运算).Decim ...

  5. (计算机组成原理)第二章数据的表示和运算-第三节3:浮点数加减运算

    文章目录 一:以十进制下的科学计数法的加减运算为例说明浮点数加减运算 二:浮点数的加减运算(不舍入) 三:浮点数的加减运算(舍入) 四:浮点数强制类型转换 一:以十进制下的科学计数法的加减运算为例说明 ...

  6. java怎么进行浮点数运算_【考试经验】Java中实现浮点数的精确运算

    [考试经验]Java中实现浮点数的精确运算 package com.lv; import java.math.BigDecimal; public class Arith { public stati ...

  7. 【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算

    本次笔记内容: P11 计算机组成原理(11) P12 计算机组成原理(12) 本节课对应幻灯片:组成原理13 data,第72页起.此外,本节课内容"浮点数"已经在"汇 ...

  8. 随机产生50道100以内 加减法的运算

    随机产生50道 加减法的运算 题目分析 1.1. 50道随机数 需要用到 Random 类随机产生100个 100以内的随机数 Random.nextInt(100) + 1; 1.2 随机加减法 存 ...

  9. python运算结果是浮点数_Python中的浮点数原理与运算分析 python中浮点数等于整数?为什么?...

    python的浮点数运算是不是精度有问题阿 python中浮点数的处理女生啊,平时要好好护肤,保持身材,多看书,多旅行,有自己的想法,去做自己喜欢的事,培养自信,不要把精力全部用在一个男人身上,成天胡 ...

最新文章

  1. 压缩软件系统设计测试结果,空气压缩机测试系统软件设计与研究
  2. MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)...
  3. 一文读懂 HTTP/2 特性
  4. android 从本地服务器下载文件,Retrofit2-如何从服务器下载文件
  5. 130_传析阅管理系统accdb64位版本
  6. android surfaceflinger 代码,Android 中的framebuffer和SurFaceFlinger的关系
  7. python3socket非阻塞在linux里无效_Linux下socket设置为非阻塞方式和fcntl系统调用
  8. 深度学习-23:矩阵理论(L0/L1/L2范数)
  9. 树莓派管脚编码c语言,树莓派IO引脚定义 | 北岛夜话
  10. 波利亚《如何解题 How to Solve It》
  11. 关于计算流体力学,你知道多少?
  12. 创建一个Vue项目(完整步骤)
  13. 基于Layabox引擎的魔塔微信小游戏设计与实现
  14. 努比亚 N2(Nubia NX575J) 解锁BootLoader 并进入临时recovery ROOT
  15. DO,DTO,VO,POJO, Java 中的各种 O(bject)
  16. python判断闰年_python判断闰年
  17. ciscotftp服务器(ciscotftp服务器下载)
  18. 选个关注热度上升的大数据工具学习下吧
  19. 数字人民币支付新选择 没有网络时也能使用
  20. 九 iOS之 图片剪裁

热门文章

  1. XML:文件头部xmlns详解
  2. mysql为表和字段取别名_MySQL查询函数---为表和字段取别名
  3. PCL1.12安装+VS2019环境配置+测试程序:斯坦福兔子
  4. Linux下nano编辑器的常用快捷键
  5. 人工智能:人工神经网络的应用场景
  6. Android中SQLite数据库查看及导入导出
  7. Spring的@Autowired注解原理分析
  8. echarts模拟从数据库异步加载数据
  9. 关于【Stable-Diffusion WEBUI】方方面面研究(内容索引)
  10. 如何针对ChatGPT设计有效的Prompt