全部题库 / 计算机 / 试题详情
简答题 计算机
2013-09-28

(11 分)假定在一个 8 位字长的计算机中运行如下类 C 程序段:

若编译器编译时将 8 个 8 位寄存器 R1~R8 分别分配给变量x、y、m、n、z1、z2、k1
和 k2。请回答下列问题。(提示:带符号整数用补码表示)
(1)执行上述程序段后,寄存器 R1、R5 和 R6 的内容分别是什么?(用十六进制表示)
(2)执行上述程序段后,变量m 和 k1 的值分别是多少?(用十进制表示)
(3)上述程序段涉及带符号整数加/减、无符号整数加/减运算,这四种运算能否利用 同一个加法器辅助电路实现?简述理由。
(4)计算机内部如何判断带符号整数加/减运算的结果是否发生溢出?上述程序段中,哪些带符号整数运算语句的执行结果会发生溢出?

参考答案

暂无

答案解析

(1) R1=134=86H, R5=90H, R6=7CH;
134=1000  0110B=86H ; x-y=1000  0110B-1111  0110B=1001  0000B=90H ; x+y=1000
0110B+1111 0110B=0111 1100B(溢出)
(2)m=-122,k1=-112
m=1000 0110B,做高位为符号位,则 m 的原码为 1111 1010B=-122;n=1111 0110B
n 的原码为 1000 1001=-10;k1=m-n=-112。
(3)无符号数和有符号数都是以补码的形式存储,加减运算没有区别(不考虑溢出情况时), 只是输出的时候若是有符号数的最高位是符号位。
减法运算求[-x]补的时候,是连同符号位一起按位取反末位加 1,但是如果有溢出情况, 这两者是有区别的,所以可以利用同一个加法器实现,但是溢出判断电路不同。
(4)判断方法是如果最高位进位和符号位的进位不同,则为溢出;“int k2=m+n;”会溢出; 三种方法可以判断溢出,双符号位、最高位进位、符号相同操作数的运算后与原操作数
的符号不同则溢出.

你可能感兴趣的试题