6.3 定点运算
包括:移位,加减乘除…
6.3.1 移位运算
1.移位的意义(移位和加法结合,实现乘除运算)
举例:
15.0
1500.0
1500相当于15相对于小数点左移了两位(小数点是不动的,十进制数左移n位=乘上10的n次方,同理,右移=除以)
所以,二进制表示的机器数在相对于小数点作n位左移或右移时,实质就是乘以/除以2的n次方。
2.移位运算
(1)算术移位规则(有符号数的移位)
正数: 原码/反码/补码 添0
对于正数:
左移时最高位丢1,结果出错;
右移时最低位丢1,影响精度。
负数: 原码添0
负数: 补码左移低位添0,右移高位添1
负数: 反码添1
对于负数:
原码,左移时丢1,结果出错;右移时丢1,影响精度。
补码:左移高位丢0,结果出错;右移地位丢1,影响精度。
反码:左移高位丢0,结果出错;右移低位丢0,影响精度。
例题:
补码定点整数1001 0101右移一位后的值为(11001010)
分析:负数补码,右移高位添1
1 1001010 (1)
设机器数字长为8位(含一位符号位),若机器数BAH为原码,算术左移1位和算术右移1位分别为(B)
A.F4H,EDH
B.F4H,9DH
C.B4H,6DH
D.B5H,EDH
分析:首先我们知道进制缩写, 八进制O(Octet), 二进制B (Binary),十六进制H (Hex),十进制D(Decimal)
BAH:原码,1 011 1010B
正数的原码算术左移,即低位添0:1 111010(0)——> 1111 0100B = F4H
正数的原码算术右移,即高位添0:1 (0)011101——> 1001 1101B = 9DH
(2)逻辑移位规则(无符号数的移位)
左移低位添0
右移高位添0
其余练习题和知识点后续更新:
3.设机器数采用补码表示(含义为符号位),若寄存器内容为9BH,则对应的十进制数为(C)
A.-27
B.155
C.-101
D.-97
4.若寄存器的内容为10000000,若它等于-0,则为(原码)
5.若x=103,y=-25,则下列表达式采用8位定点补码运算实现时,会发生溢出的是(B)
A.-x+y
B.x-y
C.-x-y
D.x+y
6.在原码一位乘法中,(D)
A.符号位参与运算
B.符号位参与运算,并根据运算结果改变结果中的符号位
C.符号位不参与运算,并根据运算结果确定结果中的符号
D.符号位不参与运算
7.在原码不恢复余数法(即原码加减交替法)的算法中(D)
A.整个算法过程中,从不恢复余数
B.每步操作后,若不够减,则需恢复余数
C.若为负商,则恢复余数
D.仅当最后一步不够减时,才恢复一次余数
8.在浮点数编码表示中,(C)在机器数中不出现,是隐含的。
A.尾数
B.符号
C.基数
D.阶码
9.计算机在进行浮点数的加减运算之前先进行对阶操作,若x的阶码大于y的阶码,则(A)
A.y的阶码扩大至与x的阶码相同,且使y的尾数部分进行算术右移
B.x的阶码缩小至与y的阶码相同,且使x的尾数部分进行算术左移
C.x的阶码缩小至与y的阶码相同,且使x的尾数部分进行算术右移
D.y的阶码扩大至与x的阶码相同,且使y的尾数部分进行算术左移
10.若浮点数的尾数用补码表示,则下列(A)中的尾数是规格化形式
A.1.00010
B.0.01010
C.0.0110
D.1.11000
11.如果采用0舍1入法进行舍入处理,则0.01010110011舍去最后一位后,结果为(A)
A.0.0101011010
B.0.0101011011
C.0.0101011100
D.0.0101011001
12.在原码加减交替除法中,符号位单独处理,参加操作的数是(B)
A.绝对值
B.绝对值的补码
C.补码
D.原码
13.在浮点机中,判断原码规格化形式的原则是(D)
A.尾数的符号位与第一数位不同
B.尾数的符号位与第一数位相同
C.阶符与数符不同
D.尾数的第一数位为1,数符任意
14.在浮点机中,判断补码规格化形式的原则是(B)
A.尾数的符号位与第一数位相同
B.尾数的符号位与第一数位不同
C.尾数的第一数位为1,数符任意
D.阶符与数符不同
15.设寄存器位数为8位,机器数采用补码形式(含1位符号位),对应十进制数-27,寄存器的内容为(B)。
A.E3H
B.E5H
C.27H
D.9BH
16.下列有关浮点数加减运算的叙述中,正确的是(D)
I.对阶操作不会引起价码上溢或下溢
II.右规和尾数舍入都可能引起阶码上溢
III.左规时可能引起阶码下溢
IV.尾数溢出时结果不一定溢出
A.仅II、III
B.仅I、III、IV
C.仅I、II、IV
D.I、II、III、IV
17.浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和判断溢出等步骤。设浮点数的阶码和尾数均采用补码表示,位数分别为5和7(均含2位符号位)。若有两个数x=2729/32和Y=255/8,则用浮点加法计算x+y的最终结果为(B)
A.00111 1100010
B.发生溢出
C.00111 0100010
D.01000 0010001
18.若9BH表示移码(含1位符号位),其对应的十进制数是(B)。???
A.27
B.101
C.-101
D.-27
19.已知:X=0.1011,Y=-0.0101,求[X/2]补,[X/4]补, [-X]补, [Y/2]补,[Y/4]补, [-Y]补。
解:[X]补 = 0.1011 [X/2]补 = 0.01011 [X/4]补 = 0.001011 [-X]补 = 1.0101
[Y] 补 = 1.1011 [Y/2]补 = 1.11011 [Y/4]补 = 1.111011 [-Y]补 = 0.0101
20.设机器字长为8位,其中1位为符号位,令A = - 93,B = +47,求[A - B]补。
解:
由A = - 91 = - 1011011,得[A]补 =1,0100101 由B = + 47 = + 0101111,得[B]补 =0,0101111 得[-B]补 =1,1010001 [A]补 = 1,0100101+[-B]补 = 1,1010001 [A]补+[-B]补 = 10,1110110 [A-B]补 = 0,1110110,还原成真值得A-B = 118,结果出错(溢出)
21.一浮点数表示格式为:阶码3位,不包含阶符,尾数6位,不包含数符,用补码表示,阶码在前,尾数(包括数符)在后,已知:,求x-y
解:x=(-0.101000)*2-101 y=(0.111000)*2-100
[x]补=11,011;11.011000 [y]补=11,100;00.111000
(1)对阶
(2)尾数相加:[Sx]补’+[-Sy]补=11.101100+11.001000=10.110100
(3)结果规格化:右规1位,无溢出,价码-1
[x – y]补 = 11, 100; 10. 110100
右规后
[x – y]补 = 11, 101; 11. 011010
∴ x – y = (–0.100110)×2-11 =
22.X=+1011,Y=-1101,用原码一位乘法计算P=X·Y
部分积 乘数
0000 11011011
10110101 1110 右移0000 01010010 1111 右移1011 11010110 1111 右移1011
100011000 1111 右移
符号位为1,P=X·Y=1,1000 1111