四、综合题
1.简述采用双符号位检测溢出的方法。
答:双符号位检测溢出是采用两位二进制位表示符号,即正数的符号位为00,负数的符号位为11.在进行运算时,符号位均参与运算,计算结果中如果两个符号位不同,则表示有溢出产生。
若结果的符号位为01,则表示运算结果大于允许取值范围内的最大正数,一般称为正溢出;若结果的符号位为10,则表示运算结果是负数,其值小于允许取值范围内的最小负数,一般称为负溢出。两个符号位中的高位仍为正确的符号。
2.简述采用单符号位检测溢出的方法。 采用但符号位检测溢出的方法有两种;
①利用参加运算的两个数据和结果的符号位进行判断:两个符号位相同的数相加,若结果的符号位与加数的符号位相反,则表明有溢出产生:两个符号位相反的数相减,若结果的符号位与被减数的符号位相反,则表明有溢出产生。其他情况不会有溢出产生。
4.简述运算器的功能。
答:运算器的主要功能是完成算术及逻辑运算,他有ALU和若干寄存器组成。ALU负责执行各种数据运算操作:寄存器用于暂时存放残余运算的数据以及保存运算状态。
5.试述先行进位解决的问题及基本思想
先行进位解决的问题是进位的传递速度。其基本思想是:让各位的进位与低位的进位无关,仅与两个参加操作的数有关。由于每位的操作是同时给出的,各进位信号几乎可以同时产生,和数也随之产生,所以先行进位可以提高进位的传递速度,从而提高加法器的运算速度.
四,计算题
4.x=—3,y=—3,用原码两位乘法求[x*y]原
5.x=—3,y=—3.用补码两位乘法求[x*y]补
6.x=+0.1011,y=—1,用补码两位乘法求[x*y]补
7、已知X=0.1101,Y=-0.1011,用原码一位乘法求[X*Y]原。 【解】|X|=00.1101,|Y|=0.1011
部分积 乘数 Yn 说明 00.0000 1011 1 Yn=1,+|X| + 00.1101 00.1101
→ 00.0110 1101 1 部分积右移一位,
+ 00.1101 Yn=1,+|X| 01.0011
→ 00.1001 1110 0 部分积右移一位, + 00.0000 Yn=0,+0 00.1001
→ 00.0100 1111 1 部分积右移一位, + 00.1101 Yn=1,+|X| 01.0001
→ 00.1000 1111 部分积右移一位。 由于Ps=Xs⊕Ys =0⊕1=1,所以,[X*Y]=1.10001111。
8、已知X=-0.1101,Y=0.0110,用原码两位乘法求[X*Y]原。 【解】|X|=000.1101,2|X|=001.1010,|Y|=00.0110
部分积 乘数 C 说明 000.0000 00.01 100
+ 001.1010 C=100,+2|X| 001.1010
→ 000.0110 00. 010 右移两位, + 000.1101 C=010,+|X| 001.0011
→ 000.0100 00.0 右移两位, 所以结果为:[X*Y]原=1.01001110。
9、已知X=-0.1101,Y=0.0110,用补码两位乘法求[X*Y]补。
【解】[X]补=111.0011,2[-X]补=001.1010,2[X]补=110.0110,[Y]补=00.0110
部分积 乘数 Yn+1 说明 000.0000 00.01 100
+ 001.1010 Yn+1=100,+2[-X]补
001.1010
→ 000.0110 00. 011 右移两位,
+ 110.0110 Yn+1=011,+2[X]补
110.1100
→ 111.1011 00.0 右移两位, 所以结果为:[X*Y]补=1.10110010。
10、已知X=-0.1101,Y=0.1011,用补码一位乘法求[X*Y]补。