模拟卷 组成原理 补码指令格式 解答题
第 43 题

(12 分)已知 32 位寄存器中存放的变量 x 的机器码为 C000004H,请问:

(1)当 x 是无符号整数时:

(2)当 x 是带符号整数(补码)时:

(3)当 xfloat 型浮点数时:

补码 指令格式

[tag_link]

**【解析】** (1) `x` 是无符号整数,所有的二进制位均为数值位,`C000 0004H` 的真值为 。 `x/2` 是由逻辑右移一位得到的,即 ,其真值为 ,存放在 `R1` 中的机器码是 `6000 0002H`。 `2x` 是由 `x` 逻辑左移一位得到的,真值发生溢出,存放在 `R1` 中的机器码是 `8000 0008H`。

(2) 机器码 `C000 0004H = 1100 0000 0000 0000 0000 0000 0000 0100B`,表示这是一个负数,数值位取反末位加 1,得到的二进制原码为 `1011 1111 1111 1111 1111 1111 1111 1100`,即二进制真值为 `-0011 1111 1111 1111 1111 1111 1111 1100`,对应的十进制真值为 。 `x/2` 是由 `x` 算术右移一位得到的,其真值为 ,存放在 `R1` 中的机器码是 `E000 0002H`。 `2x` 是由 `x` 算术左移一位得到的,其真值为 ,存放在 `R1` 中的机器码是 `8000 0008H`。

(3) 在 IEEE754 单精度浮点数中,最高位为数符位;其后是 8 位阶码,以 2 为底,用移码表示,阶码的偏置值为 127;其后 23 位是尾数数值位,隐藏数值的最高位 “1”。 转换为二进制 `1 100 0000 0 000 0000 0000 0000 0000 0100`,可知,`x` 为负数,阶码为 1,尾数为 ,故真值为 。 `x/2` 的真值是 ,存放在 `R1` 中的机器码为 `1 011 1111 1 000 0000 0000 0000 0000 0100`,即 `BF80 0004H`。 `2x` 的真值是 ,存放在 `R1` 中的机器码为 `1 100 0000 1 000 0000 0000 0000 0000 0100`,即 `C080 0004H`。