《计算机组成原理》----2.7 浮点运算

2.7 浮点运算

浮点数不能直接相加。下面以一个简单的8位尾数和一个未对齐的指数为例说明浮点运算,A = 1.0101001×24,B = 1.1001100×23。若要计算这两个数的乘积,应将尾数相乘,指数相加;即
A·B = 1.0101001×24×1.1001100×23
= 1.0101001×1.1001100×23+4
= 1.000011010101100×28.

现在来看看浮点加法。笔算时人们会像下面那样自动地将A与B的小数点对齐,
10101.001

  • 1100.1100
    100001.1110

然而,由于浮点操作数已经被表示为规格化形式,计算机在进行浮点加法时面临以下问题:
1.0101001×24
+1.1001100×23

为了对齐指数,计算机必须执行下面的步骤:

第1步,找出指数较小的那个数。
第2步,使两个数的指数相同。对于指数小的那个数,指数加几,就将尾数右移几位。
第3步,尾数相加(或相减)。
第4步,如果有必要,将结果规格化(后规格化)。

在这个例子里,A = 1.0101001×24且B = 1.1001100×23。B的指数比A的小,应将B的指数加1,使它与A的指数相等。由于指数加1会使B的值增加2倍,应将B的尾数除2,即将其右移1位。这两个操作使B的值保持不变,但被表示为0.110011×24。现在就可以将A与非规格化的B相加了。
A = 1.0101001×24
B = + 0.1100110×24
10.0001111×24

加法的结果不是规格化数,因为它的整数部分是102。因此需要对结果作规格化处理。尾数右移1位并将指数加1,得到1.00001111×25。结果的位数的精度为小数点后有8位数字,而A和B的尾数在小数点后只有7位数字。

图2-10给出了浮点加法运算的流程。对于这个流程图,以下几点需要注意。
1)因为指数有时与尾数位于同一个字中,在加法过程开始之前必须将它们分离开(解压缩)。

2)如果两个指数的差大于p+1,这里p为尾数的位数,较小的那个数由于太小而无法影响较大的数,结果实际上就等于较大的那个数。例如,1.1010×260+1.01×2-12的结果为1.1010×260,因为指数之差为72。

3)结果规格化时会检查指数,看它是否比最小指数小或比最大指数大,以分别检测指数下溢或上溢。指数下溢会导致结果为0,而指数上溢会造成错误,可能会要求操作系统介入处理。

舍入和截断误差
因为浮点运算可能引起尾数位数的增加,因此需要能够保持尾数位数不变的方法。最简单的技术叫作截断(truncation)。例如,将0.1101101截断为4位尾数的结果为0.1101。截断会产生诱导误差(induced error)(即误差是由施加在数上的操作计算所引起的),诱导误差是偏置的,因为截断后的数总是比截断前的小。

舍入(rounding)是一种更好的减少数的位数的技术。如果丢弃的位的值大于剩余数最低位的一半,则将剩余数的最低位加1。请考虑下面两个数在小数点后第4位上舍入的例子。

0.1101011 → 0.1101 删去的三位为011,什么也不做
0.1101101 → 0.1101+1 = 0.1110 删去的三位为101,因此加1
与截断相比,人们更青睐舍入,因为它更加精确并会引起非偏置的误差。截断总会使结果变小,带来系统性误差,而舍入有时会使结果减小,有时会使结果增大。舍入的主要不足在于它需要对结果进行一个额外的算术操作。

图2-11描述舍入机制。最简单的舍入机制是截断或向0舍入。“向最近的数舍入”方法,会选择距离该数最近的那个浮点数作为结果。“向正或负无穷大舍入”方法,会选择正或负无穷大方向上最近的有效浮点数作为结果。当要舍入的数位于两个连续浮点数的正中时,IEEE舍入机制会选择最低位为0的点(即向偶数舍入)。

具体实现时,浮点数使用3个专用位辅助完成舍入过程。一个m位的尾数可表示为1.m1m2…mmGRS,这里G为保护位(guard bit),用于暂时提高浮点数的精度;R为舍入位(rounding bit);用于辅助完成舍入,S为粘位(sticky bit)。粘位是R位右侧的所有位进行逻辑与运算后的结果,之所以这样称呼是因为一旦该位被置位(表明右边有一个或多个位为1)它就将保持为1。舍入算法根据以上3位确定舍入位的值。

时间: 2024-09-22 02:30:30

《计算机组成原理》----2.7 浮点运算的相关文章

计算机 组成原理-计算机组成原理 浮点数的知识

问题描述 计算机组成原理 浮点数的知识 想要学习这门课,可是被浮点数难倒了,哪位可以给我讲讲浮点数到底是怎么来的? 里面的阶码,尾数的是怎么运算的? 还有怎么和十进制之间转换? 解决方案 科学计数法懂么?任何一个数,都可以表示为(-)0.xxxx * 10 ^ (-)n的形式 比如 1200 3.14 -0.00123 分别可以表示为 0.12 * 10^4 0.314 * 10^1和 -0.123 * -10^2 总之,我们可以用4个变量表示一个数,符号 尾数 指数的符号 指数,比如 -0.1

计算机组成原理:cpu

cpu,中文名称中央处理单元,central processing unit.系统的核心,用于数据的处理,算术以及逻辑运算和控制程序的执行. 计算机组成原理:cpu-"> 组成 运算器 从字面上就可以理解到,运算器主要用来对于逻辑运算和算术运算. 在运算器中又由算术逻辑单元,累加寄存器,数据缓冲寄存器,状态寄存器 见图

计算机组成原理实验报告册上的问题

问题描述 计算机组成原理实验报告册上的问题 如何构建功能更强大的运算器如,何构建功能更强大的运算器如何构建功能更强大的运算器 解决方案 根据教材,吃透教材 解决方案二: 计算机实验报告

浮点-计算机组成原理小数点问题

问题描述 计算机组成原理小数点问题 如图,二进制的2^-100的100怎么来的? 解决方案 这里的100代表的是二进制的100不是十进制1101.0011小数点右移了4位,后面就乘上2的-100 解决方案二: 计算机组成原理计算机组成原理计算机组成原理

计算机组成原理中的问题

问题描述 计算机组成原理中的问题 某机字长32位,存储容量为1MB若按字编码,他的寻址范围是多少?某机字长32位,存储容量为16MB若按双字编码,他的寻址范围是多少? 某机字长16位,存储容量为64kB若按字编码,他的寻址范围是多少? 以上是计算机组成原理中得问题,怎么破??? 解决方案 1MB=2^20字节一个字节=2^3所以第一题是2^17,也就是0~256K 第二题 256K第三题 8K 解决方案二: 计算机组成原理计算机组成原理:时钟周期.机器周期和指令周期计算机组成原理 解决方案三:

想求计算机组成原理的一个答案

问题描述 想求计算机组成原理的一个答案 已知:计算串行传输2页,每页80*20个字符共需要多少位?假设每个字符8位,1位起始位和一位结束位.写出MOV R1 , R0流程

计算机组成原理的那些事儿

问题描述 计算机组成原理的那些事儿 计算机组成原理(唐朔飞)中,关于原码,补码,都是给出了定义式的求法...原码的定义式求法中,并没有包括-1,想问:::-1的原码到底存不存在? 解决方案 位比如说是8位整数,那么-1的原码是10000001 最高位1,其它位和1的原码相同. 解决方案二: 计算机组成原理计算机组成原理计算机组成原理

微机原理-求问一个计算机组成原理内存访问边界对齐的问题

问题描述 求问一个计算机组成原理内存访问边界对齐的问题 看不懂对于地址Oxff00ff01为什么要先输出高30位,,,还有bank0-3每个保存7位一个字,,但是图上为什么地址04和00都在bank0.,bank0到底是一个怎么样的存储空间,一个地址四个存储空间,那这四个是相当于一个地址对应一行吗,地址加4才读取bank0的D24-D31又是为什么? 如果有OXff0000f3.是不是bank0-3保存d8-15,d16-23,d24-31,d0-7进行两次总线操作?

计算机组成原理-在OP码域保持不变的前提下,如何增加额外的指令?

问题描述 在OP码域保持不变的前提下,如何增加额外的指令? 如题,求大神解答!在OP码域保持不变的前提下,如何增加额外的指令?计算机组成原理的小问题. 解决方案 http://wenku.baidu.com/link?url=FbogSABp3YFOAr_vECIRnOpiEC1aXMeTr44drXIQvEUMTfYA8F5fK5Q-LB0sgnB5c21xUzhYFmZLJOf8tE3MlKQDa0B-eyXgyXwqJ-BNZCC

考研计算机组成原理题目

问题描述 考研计算机组成原理题目 求解啊 急 实在找不到过程了 解决方案 第19题.......... 解决方案二: 计算机数据结构考研题目