浮点数加减运算课件
《浮点数计算方法》课件
浮点数的精度和舍入误差
浮点数的精度取决于尾数的位数,但由于计算机存储和计算的限制,浮点数 计算中会产生舍入误差。
浮点数的四则运算
浮点数的四则运算包括加法、减法、乘法和除法。在进行运算时,需要考虑 浮点数的规格化、舍入和溢出等问题。
防止浮点数精度丢失的方法
为了防止浮点数精度丢失,可以使用高精度计算、舍入策略、增加计算精度等方法来提高计算结果的准确性。
为什么需要浮点数计算方法?
浮点数计算方法是为了处理实数计算中的大、小数、精度丢失等问题,确保计算结果的准确性和稳定性。
IEEE 754标准
IEEE 754标准是一种用于浮点数表示和计算的国际标准,定义了浮点数的格式和运算规则。,包括符号位、阶码和尾数,通过这种 表示方式可以表示非常大或非常小的数。
《浮点数计算方法》PPT 课件
浮点数计算是计算机领域中的重要主题。本课件将介绍浮点数的基本概念、 IEEE 754标准、浮点数的运算和常见错误等内容,使您对浮点数计算方法有更 深入的了解。
什么是浮点数?
浮点数是一种用于表示实数的数值类型,通过将数值分成尾数和指数两部分, 在计算机中进行表示和计算。
11浮点运算PPT课件
-
2
5.11.2 二进制浮点数区间比较(EZCP) 1. 二进制浮点数区间比较指令的助记符及功能如表5-77所示
说明
(2) 运算超过以下范围时,发生溢出,进位标志为ON:
16位运算时, -32767~32767
32位运算时, -2147483648~2147483648
-
10
5.11.7 浮点数三角函数运算(SIN,COS,TAN) 1. 浮点数三角函数运算指令的助记符及功能如表5-82所示:
3. 说明 (1) SIN,COS,TAN指令的源(S.)与目标(D.)均为32位指令。源的角度值用弧度RAD(二进 制浮点值)表示:
弧度(RAD)值 = 角度×π/180 进行三角运算后的结果也是二进制浮点值。图5-190的意义是将源(弧度值)进行SIN、 COS、TAN运算后,结果送目标。
(2)进行三角函数运算时,通常是将角度(单-位度)进行弧度RAD(二进制浮点值)变11换后,用 三角函数计算,再将结果转换为十进制浮点值,如图7-191所示。
-
8
5.11.5 二进制浮点数开方(ESQR) 1. 二进制浮点数开平方指令的助记符及功能如表5-80所示:
3. 说明 (1) 源(S.)与目标(D.)均为二进制浮点数,32位。
ESQR指令的意义为:将源开平方送目标。当常数K,H为源时,自动转换为二进 制浮点数,再进行运算。
(2) 源的值必须为正数。如为负数,则运算错误。此时M8067动作,指令不能执行。
-
9
第5讲_浮点数四则运算
解: ∵
214 = 16384
215 = 32768
∴ 15 位二进制数可反映 ±3 万之间的十进制数 215 × 0.××× … … ××
15位
m = 4、5、6 …
满足 最大精度 可取 m = 4,n = 18
3、举例
19 例 将 + 128 写成二进制定点数、浮点数及在定点 机和浮点机中的机器数形式。其中数值部分均取 10 位, 数符取 1 位,浮点数阶码取 5 位(含1位阶符)。
机器中数据的数值范围与精度
数值范围:机器能表示的一个数的最大值与 最小值之间的范围。 数据精度:由尾数的位数决定,尾数位数越 多,可表示精度越高。
浮点数的表示范围
上溢 阶码 > 最大阶玛 下溢 阶码 < 最小阶码 按 机器零 处理 上溢 上溢
负数区
最小负数 m –2( 2 –1)×( 1 – 2–n)
第5 讲 浮点数四则运算
定点数和浮点数 浮点数的加减运算
浮点数的乘除运算
一、定点数和浮点数
小数点按约定方式标出 1、定点数
S f S 1S 2 … n S
数 数值部分 符 小数点位置
或
Sf S1S2 … n S
数 符
数值部分
小数点位置
定点机 原码
小数定点机 –(1 – 2-n) ~ +(1 – 2-n)
解: 设 x = +
二进制形式 定点表示
19 128
x = 0.0010011 x = 0.0010011 000 浮点规格化形式 x = 0.1001100000×2-10 [x]原 = [x]补 = [x]反 = 0.0010011000 定点机中
浮点机中 [x]原 = 1, 0010; 0. 1001100000 [x]补 = 1, 1110; 0. 1001100000 [x]反 = 1, 1101; 0. 1001100000
03-35.3 浮点数的乘除运算_课件
阶码全0? 下溢
阶码减1 阶码全0?
下溢
右规
阶码全1?
阶码加1
上溢
阶码全1?
COMPUTER PRINCIPLE
5. 判溢出
溢出判断举例
例1:若Eb=0000 0001,则尾数左规一次后,结果的阶码Eb=? 解:Eb = Eb+[-1]补 = 0000 0001 + 1111 1111
= 0000 0000 阶码下溢!
2. 尾数运算
尾数相乘
预处理
尾数1
异常处理
检测除数
尾数2
相乘 • 定点小数原码乘法运算
结果为0
检测被除数
相乘
COMPUTER PRINCIPLE
3. 规格化
规格化原则
• 当尾数高位为0,左规 • 当尾数产生进位,右规
乘法运算结果最多左规几次、右规几次? 除法呢?
规格化尾数:1≤尾数1<2, 1≤尾数2<2 (尾数形为1.xxx) 乘法: 1≤尾数1 × 尾数2<4 不需左规、最多右规一次 除法: 0.5<尾数1 ÷ 尾数2<2 不需右规、最多左规一次
判溢出
判溢出
COMPUTER PRINCIPLE
5. 判溢出
阶码溢出情况
阶码求和
Ex
阶码求差
Ey
129
Eb
规格化
COMPUTER PRINCIPLE
5. 判溢出
阶码溢出情况
阶码求和
Ex
阶码求差
Ey
127
Eb
规格化
COMPUTER PRINCIPLE
5. 判溢出
阶码溢出情况
阶码求和
左规
浮点运算 计算机组成原理课件
在进行除法运算前,需要将浮点数规格化, 使它们的指数部分相同。
对齐
将浮点数的小数部分进行对齐,使它们的精 度相同。
相除
将规格化后的浮点数按位相除。
舍入
根据舍入模式,将结果舍入到最近的整数。
03 浮点数的溢出与舍入
溢出的原因与防止方法
原因
当浮点数的运算结果超出浮点数表示范围时,就会发生溢出。
比较精度
比较范围
06 浮点运算的应用与发展
浮点运算在科学计算中的应用
01 02 03
浮点运算在图形图像处理中的应用
浮点运算的发展趋势与未来展望
01 02 03
WATCHING
舍入与溢出
02 浮点运算的实现
加法运算的实现
规格化 对齐
相加 舍入
乘法运算的实现
01
规格化
在进行乘法运算前,需要将浮点数 规格化,使它们的指数部分相同。
相乘
将规格化后的浮点数按位相乘。
03
02
对齐
将浮点数的小数部分进行对齐,使 它们的精度相同。
舍入
根据舍入模式,将结果舍入到最近 的整数。
04
除法运算的实现
防止方法
可以通过对数表进行查找,判断是否会发生溢出,或者采用指数范围更大的表示方法。
舍入的原因与处理方法
原因
由于计算机的存储和运算精度的限制, 浮点数运算结果往往会出现舍入误差。
VS
处理方法
可以采用四舍五入、向上取整、向下取整 等方法进行舍入处理,以减少舍入误差。
浮点数的比较运算
比较方法
注意问题
计算机中的浮点数运算器
加法运算 乘法运算 除法运算
浮点运算在计算机中的实现过程
计算机组成原理:浮点数表示及运算(方案).ppt
浮点数表示及运算
计算机组成原理
1
一、浮点数的表示
9×10-28 = 0.9 ×10-27 2×1033 = 0.2 ×1034
任意一个十进制数 N 可以写成
N=10E·×M (十进制表示)
计算机中一个任意进制数 N 可以写成
N=Re×m = 2E×M = 2±e× (±m)
m :尾数,是一个纯小数。 e :浮点的指数, 是一个整数。
浮点数的表示范围 负下溢 正下溢
负上溢
正上溢
-
最
负数 最
0
正数
最
最
+
小
大
小
大
负
负
正
正
数
数
数
数
N=2E×M
|N|→∞ 产生正上溢或者负上溢
|N|→0 产生正下溢或者负下溢
计算机组成原理
3
机器字长一定时,阶码越长,表示范围越大,精度越低 浮点数表示范围比定点数大,精度高
8位定点小数可表示的范围
0.0000001 --- 0.1111111
1/128 --- 127/128
设阶码2位,尾数4位 可表示2-11*0.0001 --- 211*0.1111
0.0000001 --- 111.1
设阶码3位,尾数3位 可表示2-111*0.001 --- 2111*0.111
0.0000000001 --- 1110000
= BBD8H
计算机组成原理
7
三 、浮点数的标准格式IEEE754
为便于软件移植,使用 IEEE(电气和电子工程师协会)标准IEEE754 标 准:尾数用原码;阶码用“移码”;基为2。
计算机组成原理第4章浮点数运算方法ppt课件
jy]移 (mod 2n+1) 则直接可得移码形式。
同理,当作除法运算时,商的阶码可用下式完成: [jx]移+[-jy]补 = [jx - jy]移
11
5. 溢出判断
在浮点规格化中已指出,当尾数之和(差)出现 01.××…×或10.××…×时,并不表示溢出,只有 将此数右规后,再根据阶码来判断浮点运算结果是否 溢出。
若机器数为补码,尾数为规格化形式,并假设阶符取 2位,阶码取7位,数符取2位,尾数取n位,则它们能 表示的补码在数轴上的表示范围如下图。
浮 点 数 加 减 运 算 流 程 图
16
浮点加减法运算
1. 大型计算机和高档微型机中,浮点加减法运算是由 硬件完成的。低档的微型机浮点加减法运算是由软 件完成的,但无论用硬件实现或由软件实现加减法 运算,基本原理是一致的。
2. 浮点加减法运算要经过对阶、尾数求和、规格化、 舍入和溢出判断五步操作。其中尾数运算与定点加
23
2. 尾数运算
(1)浮点乘法尾数运算 (2)浮点除法尾数运算
24
(1)浮点乘法尾数运算
预处理:检测两个尾数中是否有一个为0, 若有一个为0,乘积必为0,不再作其他操 作;如果两尾数均不为0,则可进行乘法运 算。
相乘:两个浮点数的尾数相乘可以采用定 点小数的任何一种乘法运算来完成。
规格化:相乘结果可能要进行左规,左规 时调整阶码后如果发生阶下溢,则作机器 零处理;如果发生阶上溢,则作溢出处理。
浮点数ppt
从运算时间来看可以认为 1.0+1.0 >> 1+1
没有FPU怎么办???
将浮点运算转换成定点运算!
主要考虑两方面: 1. 精度要求; 2. 数据范围;
如要求小数点后两位,则 至少放大100倍进行整数计 算
如32位处理器,则必须保 证处理后的数据在 231 之内
ANOTHER TIPS (数据转换)
Just 发送时间 发送的字节数远远少于 格式化发送的字节数
浮点数加减运算:
对阶 加减 规格化 舍入 判溢 出
浮点数乘除运算:
阶码 加减 尾数 乘除 规格化 舍入 判溢 出
整数和浮点数加减对比 (1+1 等同于 1.0+1.0?)
int a=1,b=1,c; ———————————
float aa=1.0,b=1.0,cc; ———————————
从最终结果来看可以认为 1+1 = 1.0+1.0
浮点运算
浮点数在计算机内的格式:
X = MS ES Em-1 ...E2 E1 M-1M-2...M-n
符号位 0正1负
阶码EX
尾数MX
表示的值为:
X = MX * 2
EX
十进制科学计数法 : 要求
a 10
n
1 a 10
X = MX * 2
EX
同样,计算机内要求 的
MX
1/ 2
把不满足这一表示要求的尾数,变成满足 这一要求的尾数的操作过程,叫作浮点数的规 格化处理,通过尾数移位和修改阶码实现。
pi=3.1415926
怎么发送 ? 串口 怎么接收 ?
串口不能直接发送浮点数 怎么办?
常规做法:
浮点数加减运算
出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7
位(均含2位符号位)。若有两个数X=27×29/32,Y=25×5/8,则用浮点
加法计算X+Y的最终结果是:
A.00111 1100010 B. 00111 0100010 C.01000 0010001 D. 发生溢出 解题思路: • X= 2 00111 × 0.11101; Y = 2 00101 × 0.101 ;对阶后大的阶码为00111 • 位数相加后的结果为:01.00010, • 尾数需右移规格化,同时阶码加1后变成 01 000
[X+ Y]补= 00 011 ,11 . 000101011
4) 舍入 ( 0 舍 1入)
在结果尾数的最低位加1,最后的结果为: [X+ Y]补= 00 011 ,11 . 00010110 X+Y = – 0.11101010 2 011
第三章 3.7 浮点数加减运算
4
浮点数加减运算举例
例2 浮点数加减运算过程一般包括对阶、尾数运算、规格化、舍入和判溢
第三章 3.7 浮点数加减运算
4
浮点数加减运算举例
例 设 x = 2 010 × 0.11011011 y = 2 100 × (- 0.10101100) 求 x+y
2)尾数运算 00.00110110 11 + 11.01010100 11.1000101011 3) 尾数规格化处理
分析发现,只左移一次即可达到规格化要求。规格化后的结果为:
计算机组成原理
第三章 运算方法与运算器
3.7 浮点数加减运算
第三章 3.7 浮点数加减运算
1
规格化浮点数的概念
浮点数计算方法PPT课件
数,通常将前者称为真值,后者称为机器数或
机器码。 常用的机器码表示法:
1. 原码表示法
2. 补码表示法
3. 反码表示法
4. 移码表示法
2021/3/7
CHENLI
18
1. 原码表示法
若定点小数的原码形式为x0 .x1x2…xn , 则原码表示的定义是:
[x] =
原
{
x 1-x=1+|x|
1>x≥0 0≥x>-1
在机器的某个存储单元中,以便以后对计算结
果按这个比例增大。显然这要占用一定的存储
空间和运算时间。因此得到浮点表示法如下:
2021/3/7
CHENLI
5
浮点表示法:把一个数的有效数字和数的范围
在计算机的一个存储单元中分别予以表示,这种
把数的范围和精度分别表示的方法,相当于数的
小数点位置随比例因子的不同而在一定范围内自
假设现在的标准时间为4点正; 而有一只表已
经7点了,为了校准时间,可以采用两种方法:
一是将时针退 7-4=3 格;一是将时针向前拨12-
3=9格。这两种方法都能对准到4点,由此可以
看出,减3和加9是等价的,就是说9是(-3)对12
的补码,可以用数学公式表示:
-3=+9
(mod12)
mod12的意思就是12模数,这个“模”表
电子的质量(9×10-28克)和太阳的质量
(2×1033克)相差甚远,在定点计算机中无法直
接来表示这个数值范围.要使它们送入定点计
算机进行某种运算,必须对它们分别取不同的
比例因子,使其数值部分绝对值小于1,即:
9 × 10-28=0.9 × 10-27
2 × 1033=0.2 × 1034
浮点数的加法减法运算共36页
•
29、在一切能够接受法律支配的人类 的状态 中,哪 里没有 法律, 那里就 没有自 由。可以废除 法律。 ——塞·约翰逊
41、学问是异常珍贵的东西,从任何源泉吸 收都不可耻。——阿卜·日·法拉兹
42、只有在人群中间,才能认识自 己。——德国
43、重复别人所说的话,只需要教育; 而要挑战别人所说的话,则需要头脑。—— 玛丽·佩蒂博恩·普尔
44、卓越的人一大优点是:在不利与艰 难的遭遇里百折不饶。——贝多芬
45、自己的饭量自己知道。——苏联
浮点数的加法减法运算
•
26、我们像鹰一样,生来就是自由的 ,但是 为了生 存,我 们不得 不为自 己编织 一个笼 子,然 后把自 己关在 里面。 ——博 莱索
•
27、法律如果不讲道理,即使延续时 间再长 ,也还 是没有 制约力 的。— —爱·科 克
•
28、好法律是由坏风俗创造出来的。 ——马 克罗维 乌斯
浮点数加减法
5.检查阶码是否溢出
阶码溢出,则浮点数一定溢出。 若阶码不溢出,结束运算。 若阶码溢出 ①下溢,置运算结果为机器零。 ②上溢,置溢出标志。
下溢:阶码 最小阶码,即E终 补 10 .
上溢:阶码 最大阶码,即E终 补 01 .
例题: x=2^(+10) ×0.1101,y=2^(+01) ×0.1011, 求x+y,舍入用0舍1入法。
下划线上的数是右移出 去而保留的附加位
②尾数相加
[ M ]补 [ M X ]补 [ MY ]补 001101 000101 1 010010 1
③规格化操作
右规,尾数右移一位, 结果 001001 01,阶码 1,E 0011
④舍入
丢失的最高位为0,舍去丢失的各位的值 。 ⑤判溢出
浮点数的加减法运算
完成浮点数加减法的5个步骤:
1.对阶操作 2.尾数的加减运算 3.规格化操作 4.舍入(0舍1入法) 5.检查阶码是否溢出
设有两浮点数X,Y。
X MX 2
EX
Y MY 2
均为规格化数。
EY
1.对阶
1.比较阶码的大小,求其 差E 2.E max( E X , EY ), 保留E 阶码值小的数的尾数右 移E位 3.E 0时, 使两数的阶码值相等 将其阶码值 E
小阶向大阶对齐
尾数右移
原码:符号位不参加移位,尾数数值部分的高位补0 补码:符号位参加右移,并保持原符号位不变
为减小误差,保留右移中丢失的最高位(舍入时会用 到)
2.尾数的加减运算
对阶后,尾数进行加/减运算
3.规格化操作
当第二步得到的和/差不是规格化数时,需转变成规格化数。 原码: 00/11. 1 × × × × × 补码: 00. 1 × × × × × 11. 0 × × × × × ①若两个符号位不同,则溢出。 右规:将尾数右移一位,阶码E+1 ②若两个符号位相同,不溢出。但若最高数值位=符号位,则: 左规:将尾数连续左移,直到最高数值位≠符号位。 同时,阶码E-移位的位数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如果一个二进制浮点数的尾数的绝对值小于1并且大于等于0.5,(1>|尾数|≥0.5),那么这个二进制浮点数就是一个规格化的浮点数。
用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有一个符号位时:规格化的浮点数的尾数是正数时应该是0 . 1 X X X X X X X X X ……的形式(0表示符号位,X表示0或1中的任意一个数值)规格化的浮点数的尾数是负数时应该是1 . 0 X X X X X X X X X ……的形式(1表示符号位,X表示0或1中的任意一个数值)用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:规格化的浮点数的尾数是正数时应该是00 . 1 X X X X X X X X X ……的形式(00表示符号位,X表示0或1中的任意一个数值)规格化的浮点数的尾数是负数时应该是11 . 0 X X X X X X X X X ……的形式(11表示符号位,X表示0或1中的任意一个数值)两个浮点数加减法的计算结果必须规格化,如果不是规格化的数,则要通过修改阶码并同时左移或者右移尾数,使其变为规格化的数。
[例] x=2010×0.11011011,y=2100×-0.10101100,浮点数均以补码表示,阶码采用双符号位,尾数采用单符号位。
求x+y 。
答:(步骤1)转换成题目中要求的浮点数格式:浮点数x=2010×0.11011011的阶码是+010,尾数是+0.11011011浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位,[x]浮的阶码=00010(00是两个符号位)浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位,[x]浮的尾数=0.11011011(0是1个符号位)浮点数y=2100×-0.10101100的阶码是+100,尾数是- 0.10101100浮点数均以补码表示,所以阶码以补码表示,并且阶码采用双符号位,[y]浮的阶码=00100(00是两个符号位)浮点数均以补码表示,所以尾数以补码表示,并且尾数采用单符号位,[y]浮的尾数=1.01010100(1是1个符号位)(y=2100×-0.10101100中10101100先取反变为01010011,再加1后变为01010100)[x]浮=00010, 0.11011011;[y]浮=00100, 1.01010100;(步骤2)阶数对齐:x的阶码是+2(二进制00010),y的阶码是+4(二进制00100),阶码小的向阶码大的数对齐, x的阶码向y的阶码对齐。
x的阶码加2,从00010变成00100 ,此时x的阶码与y的阶码相等。
[x]浮尾数0.11011011右移两位(小数点不动,左边添加两个符号位,因为x的尾数是正数,所以添加的两个符号位是0),[x]浮尾数变为0.00110110(11)0.11011011(右移两位,小数点不动,左边添加两个符号位)0.00110110(11)因为x的阶码与y的阶码相等,都是00010,所以把x的尾数与y的尾数相加。
(步骤3)尾数相加0. 00 1 1 0 1 1 0 (11)+1. 0 1 0 1 0 1 0 0————————————————1. 1 0 0 0 1 0 1 0 (11)注意:因为y的尾数没有对应的位数,所以(11)直接落下来进入结果;x尾数的符号位0与y尾数的符号位1同样参与到加法运算。
(步骤4)判断计算结果是否溢出:当计算结果的尾数只有一个符号位时,符号位与小数点后第一位相等,则没有溢出;如果符号位与小数点后第一位不等,则产生溢出。
一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。
本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),其中符号位是1,小数点后第一位是1 ,二者相等,没有溢出。
(步骤5)判断计算结果是否满足规格化:用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有一个符号位时:规格化的浮点数的尾数是正数时应该是0 . 1 X X X X X X X X X ……的形式(0表示符号位,X表示0或1中的任意一个数值)规格化的浮点数的尾数是负数时应该是1 . 0 X X X X X X X X X ……的形式(1表示符号位,X表示0或1中的任意一个数值)本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),不满足规格化的浮点数的尾数是负数时应该是1 . 0 X X X X X X X X X ……的形式,因此不是规格化的浮点数。
为了规格化,本题中计算结果的尾数是1. 1 0 0 0 1 0 1 0 (11),左移1位,同时阶码减一。
(只能左移,而且左移1位就可以了)原来的计算结果[x+y]浮=00100, 1. 1 0 0 0 1 0 1 0 (11);规格化后(尾数左移1位,小数点不动,右边添加一个0;同时阶码减一)[x+y]浮=00011, 1 . 0 0 0 1 0 1 0 1 (10);尾数1 . 0 0 0 1 0 1 0 1,满足规格化的浮点数的尾数是负数时应该是1 . 0 X X X X X X X X X ……的形式,因此是规格化的浮点数。
(步骤6)计算结果舍入处理就近舍入(0舍1入) 法:类似”四舍五入”,丢弃的最高位为1,进1;本题丢弃的是(10),最高位为1,所以向上进1位则有1 . 0 0 0 1 0 1 0 1+ 1────────────────1. 0 0 0 1 0 1 1 0结果为[x+y] 浮=00011, 1 . 0 0 0 1 0 1 1 0;直接舍弃法:本题 (10)被直接舍弃。
结果为[x+y] 浮=00011, 1 . 0 0 0 1 0 1 0 1;[例] x =83,y=165,用变形补码计算x+y ,并指出结果是否溢出。
答:(步骤1)转换成题目中要求的浮点数格式:x=83=(3)10×2-3=(11)2×2-3=(0.11)2×2-1 y=165=(5)10×2-4=(101)2×2-4=(0.101)2×2-1 ( )10表示十进制数,( )2表示二进制数。
浮点数x=(0.11)2×2-1的阶码是-1,尾数是+0.11。
变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。
[x]浮的阶码=11111(11是两个符号位;1对应二进制是001,001取反后是110,110再加1变成111)[x]浮的尾数=00.11000000(00是两个符号位;题目没写尾数几位,自己假定尾数10位)浮点数y=(0.101)2×2-1的阶码是-1,尾数是+0.101。
[y]浮的阶码=11111(11是两个符号位;1对应二进制是001,001取反后是110,110再加1变成111)[y]浮的尾数=00.10100000(00是两个符号位;题目没写尾数几位,自己假定尾数10位)[x]浮=11111, 00.11000000;[y]浮=11111, 00.10100000;(步骤2)阶数对齐:x的阶码是-1(二进制11111),y的阶码是-1(二进制11111)因为x的阶码与y的阶码相等,都是11111,所以不用移位处理,直接把x的尾数与y 的尾数相加。
(步骤3)尾数相加00.11000000+00.10100000————————————————01.01100000注意:x尾数的符号位00与y尾数的符号位00同样参与到加法运算。
(步骤4)判断计算结果是否溢出:当计算结果的尾数有两个符号位时,两个符号位相等,则没有溢出;如果两个符号位不等,则产生溢出。
一旦发生溢出,计算结果的尾数右移一位,同时阶码加一。
本题中计算结果的尾数是01.01100000,其中一个符号位是0,另外一个符号位是1,两个符号位不等,则产生溢出。
计算结果的尾数01.01100000右移一位(小数点不动,左面添加最左边的符号位0),变成00.10110000(0);同时阶码加一,从11111变成00000。
(步骤5)判断计算结果是否满足规格化:用二进制补码表示1个规格化的浮点数,并且规格化的浮点数的尾数只有两个符号位时:规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式 (00表示符号位,X 表示0或1中的任意一个数值)规格化的浮点数的尾数是负数时应该是 11 . 0 X X X X X X X X X ……的形式 (11表示符号位,X 表示0或1中的任意一个数值)本题中计算结果的尾数是00.10110000(0),满足规格化的浮点数的尾数是正数时应该是 00 . 1 X X X X X X X X X ……的形式。
(步骤6)计算结果舍入处理因为舍弃的尾数是(0),所以无论哪种舍弃方法都会得到同样的结果。
原因是舍弃0对结果本身无影响。
因此(0)可以直接舍弃。
结果为[x+y] 浮=00000, 00.10110000;(步骤7)验证结果正确性 x+y=161116516616583=+=+= (11)10×2-4=(1011)2×2-4=(0.1011)2×20 浮点数[x+y] =(0.1011)2×20的阶码是0,尾数是+0.1011。
变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。
[x+y]浮的阶码=00000(00是两个符号位;0对应二进制是000)[x+y]浮的尾数=00.10110000(00是两个符号位;题目没写尾数几位,自己假定尾数10位)步骤7与步骤6结果一致,所以步骤1到步骤6都是正确的。
[例] x =645,y=323,用变形补码计算x+y ,并指出结果是否溢出。
答:(步骤1)转换成题目中要求的浮点数格式:x=641=(1)10×2-6=(1)2×2-6=(0.1)2×2-5 y=327=(7)10×2-5=(111)2×2-5=(0.111)2×2-2 ( )10表示十进制数,( )2表示二进制数。
浮点数x=(0.1)2×2-5的阶码是-5,尾数是+0.1。
变形补码要求本题中阶码采用补码形式并且两个符号位;尾数采用补码形式并且两个符号位。
[x]浮的阶码=11011(11是两个符号位;5对应二进制是101,101取反后是010,010再加1变成011)[x]浮的尾数=00.10000000(00是两个符号位;题目没写尾数几位,自己假定尾数10位)浮点数y=(0.111)2×2-2的阶码是-2,尾数是+0.111。