问答题
已知32位寄存器R1中存放的变量x的机器码为8000 0004H,请问:
问答题
当x是无符号整数时,x的真值是多少?x/2的真值是多少?x/2存放在R1中的机器码是什么?2x的真值是多少?2x存放在R1中的机器码是什么?
【正确答案】
【答案解析】对于无符号整数,所有二进制位均为数值位。x的真值为2
31
+2
2
。乘2和除2,相当于无符号数的左移和右移运算。x/2的真值为2
30
+2,存放在R1中的机器码是4000 0002H。2x的真值为2
32
+2
3
,发生溢出,存放在R1中的机器码是0000 0008H。
问答题
当x是带符号整数(补码)时,x的真值是多少?x/2的真值是多少?x/2存放在R1中的机器码是什么?2x的真值是多少?2x存放在R1中的机器码是什么?
【正确答案】
【答案解析】对于带符号数(补码),最高位为符号位。8000 0004H对应二进制数的最高位为1,为负数,真值为-0111 1111 1111 1111 1111 1111 1111 1100,即十进制的-(2
31
-2
2
)。乘2和除2,相当于补码的左移和右移运算。x/2的真值为-(2
30
-2),存放在R1中的机器码是C000 0002H。2x的真值为-(2
31
-2
3
),发生溢出,存放在R1中的机器码是8000 0008H。