已知32位寄存器中存放的变量x的机器码为C0000004H,请问: (1)当x是无符号整数时,x的真值是多少?x/2的真值是多少?x/2存放在R1中的机器码是什么?2x的真值是多少?2x存放在R1中的机器码是什么? (2)当x是带符号整数(

admin2019-08-01  207

问题 已知32位寄存器中存放的变量x的机器码为C0000004H,请问:
    (1)当x是无符号整数时,x的真值是多少?x/2的真值是多少?x/2存放在R1中的机器码是什么?2x的真值是多少?2x存放在R1中的机器码是什么?
    (2)当x是带符号整数(补码)时,x的真值是多少?x/2的真值是多少?x/2存放在R1中的机器码是什么?2x的真值是多少?2x存放在R1中的机器码是什么?

选项

答案算术移位的对象是带符号数,在移位过程中必须保持操作数的符号不变。当左移1位时,如不产生溢出,则数值乘以2;而右移1位时,如不考虑因移出舍去的末位尾数,则数值除以2。因此,对于无符号整数,所有二进制位均为数值位,而对于带符号数,最高位为符号位。2x即左移一位,x/2即右移一位。 (1)x是无符号整数,C0000004H的真值为231+230+22。 x/2是由x逻辑右移一位得到的,即(231+230+22)÷2,其真值为230+229+2,存放在R1中的机器码是 01 10 0000 0000 0000 0000 0000 0000 0010 转换成十六进制为6000 0002H。 2x是由x逻辑左移一位得到 1 1000 0000 0000 0000 0000 0000 0000 1000 真值发生溢出,存放在R1中的机器码是1000 0000 0000 0000 0000 0000 0000 1 000,转换成十六进制为80000008H. (2)机器码C0000004H的二进制补码表示为 1,100 0000 0000 0000 0000 0000 0000 0100 这是一个负数,得到的二进制真值为 -011 11 1 1 11 11 11 1 1 11 1 1 11 11 11 1 11100 对应的十进制真值为一(230一22)。 x/2是由x算术右移一位得到的,其真值为一(229一2),用二进制真值表示为 一1 10 0000 0000 0000 0000 0000 0000 0010 存放在R1中的机器码是 1,110 0000 0000 0000 0000 0000 0000 0100 转换成十六进制表示为E0000002H。

解析
转载请注明原文地址:https://kaotiyun.com/show/5kCi777K
0

相关试题推荐
最新回复(0)