讲解1 二进制运算习题讲解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

✓补码一位除法规则:

相关文档
最新文档