计算题

已知 32 位寄存器中存放的变量 x 的机器码为 C0000004H, 请问:

问答题

当 x 是无符号整数时, x 的真值是多少? x/ 2 的真值是多少? x/ 2 存放在 R1 中的机器码是什么? 2x的真值是多少? 2x 存放在 R1 中的机器码是什么?

【正确答案】

对于无符号整数, 所有二进制位均为数值位, 而对于带符号数, 最高位为符号位。 2x 即左移一位, x/2 即右移一位。
 x 是无符号整数, C0000004H 的真值为 231 +230 +22 。 x/ 2 是由 x 逻辑右移一位得到的, 即(231 +230+22 ) / 2, 其真值为 230 +229 +2, 存放在 R1 中的机器码是 60000002H。 2x 是由 x 逻辑左移一位得到的, 真值发生溢出, 存放在 R1 中的机器码是 80000008H。

【答案解析】
问答题

当 x 是带符号整数(补码) 时, x 的真值是多少? x/ 2 的真值是多少? x/ 2 存放在 R1 中的机器码是什么? 2x 的真值是多少? 2x 存放在 R1 中的机器码是什么?

【正确答案】

机器码 C0000004H 表示这是一个负数, 得到的二进制真值为-0111111111111111111111111111100,对应的十进制真值为-(230 -22 )。 x/ 2 是由 x 算术右移一位得到的, 其真值为-(229 -2), 存放在 R1 中的机器码是 E0000002H。 2x 是由 x 算术左移一位得到的, 其真值为-(231 -23 ), 存放在 R1 中的机器码是 80000008H。

【答案解析】