讲解1 二进制运算习题讲解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[例题2.1]
码值10000001B,若表示一个无符号数,则该数为27+20=129;若是一个带符号数的原码表示,则该数为-0000001B=-1;若是一个带符号数的补码表示,则该数为-1111111B=-127
规格化的浮点数
✓浮点数的阶码决定了浮点数的表示范围,浮点数的尾数决定了浮点数的表示精度✓定义:有效尾数占满尾数的所有位
即对于非0的尾数,规格化尾数应满足1/2≤|M|<1
原码规格化后:正数0.1×××的形式;负数1.1×××的形式
补码规格化后:正数0.1×××的形式;负数1.0×××的形式(-1/2为1.100 0
比较特殊)
✓浮点数的表示范围
设阶码m+1位补码表示,尾数n+1位补码,规格化
溢出
✓定点数:超出字长所表示的范围即为溢出
✓浮点数:规格化后,阶码超出机器的最大阶码,即为上溢;阶码小于机器最小阶码,即为下溢。(不看尾数,只看阶码)
二进制乘法
✓原码一位乘法规则:
①被乘数和乘数取绝对值参加运算,符号位单独处理
②被乘数取双符号,部分积长度同被乘数,初值为0
③从乘数的最低位y
n 开始判断,若y
n
=1,则部分积加上被乘数,然后右移一位;
若y
n
=0,部分积加上0,然后右移一位。
④重复③,共n次(n次“加-右移)n为小数点后数值部分位数✓补码一位乘法规则(Booth算法):
①符号位参加运算,运算的数均以补码表示
②被乘数取双符号,部分积初值为0
③乘数最低位增加一位Yn+1,初值为0
④逐次比较相邻两位,并按下列规则运算
Y
n (高位) Y
n+1
(低位) 操作
0 0 部分积右移
1 0 部分积+[-X]
补
,右移
0 1 部分积+[X]
补
,右移
1 1 部分积右移
移位按补码右移规则,即复制最高位(符号位)
⑤按照上述算法作n+1步操作,但最后一步不移位(∵补码符号位也是数值一部
分,故共做n+1次加法,n次右移)
[例题2.2]
已知X=0.1101,Y=-0.1011,用原码一位乘计算X×Y
解:乘积符号位=1
部分积|乘数| 说明
00.0000 0.1011 y
n
=1,则部分积加上被乘数,右移+ 00.1101
00.1101
右移00.0110 1 0.101 y
n
=1,则部分积加上被乘数,右移+ 00.1101
01.0011 1
右移00.1001 11 0.10 y
n
=0,则部分积加上0,右移
右移00.0100 111 0.1 y
n
=1,则部分积加上被乘数,右移+ 00.1101
01.0001 111
右移00.1000 1111
∴ X×Y=-0.1000 1111
[例题2.3]
已知X=0.1101,Y=-0.1011,用补码一位乘计算X×Y
解:[X]
补=00.1101,[-X]
补
=11.0011,[Y]
补
=1.0101
部分积乘数 y
n
y
n+1
说明
00.0000 1.01010 增加一位y
n+1
=0,y
n
y
n+1
=10, 部分积+[-X]
补
,右移11.0011
11.0011
右移11.1001 1 1.0101 y
n y
n+1
=01, 部分积+[X]
补
,右移
00.1101
1 00.0110 1 进位1舍去
右移00.0011 01 1.010 y
n y
n+1
=10, 部分积+[-X]
补
,右移
11.0011 11.0110 01
右移11.1011 001 1.01 y
n y
n+1
=01, 部分积+[X]
补
,右移
00.1101
1 00.1000 001 进位1舍去
右移 00.0100 0001 1.0 y
n y
n+1
=10, 部分积+[-X]
补
,最后一步不右移
11.0011
11.0111 0001
∴ [X×Y]
补
=1.0111 0001 X×Y=-0.1000 1111
二进制除法
✓原码一位除法(不恢复余数法,加减交替法)规则:
①符号位不参加运算,并要求|X|<|Y|
②先用被除数减去除数
③若余数为正,商上1,余数左移1位减除数;
若余数为负,商上0,余数左移1位加除数
④重复③n次(n为数值部分位数),当最后一步(第n+1步)余数为负时,需加上
|Y|得到正余数
[例题2.4]
已知X=-0.01010,Y=-0.01100,用原码加减交替法计算X÷Y
解:同号数相除,得出的商和余数的符号位均为正
|X|=0.01010 ,|Y|=0.01100, [-|Y|]
补
=1.10100
被除数(余数) 商说明
0.01010
-Y 1.10100 第一步先减除数
1.11110 0 余数为负,商上0,下一步“左移-加”
左移 1.11100
+Y 0.01100
0.01000 0.1 余数为正,商上1,下一步“左移-减”
左移 0.10000
-Y 1.10100
0.00100 0.11 余数为正,商上1,下一步“左移-减”
左移 0.10000
-Y 1.10100
1.11100 0.110 余数为负,商上0,下一步“左移-加”
左移 1.11100
+Y 0.01100
0.00100 0.1101 余数为正,商上1,下一步“左移-减”
左移 0.10000
-Y 1.10100
1.11100 0.11010 余数为负,商上0
+Y 0.01100 最后一步得出的余数为负,加上除数进行修正
0.01000
∴X÷Y=-0.11010 余数0.01000×2-5
✓补码一位除法规则: