【练习9】假设机器数字长为8位(含1位符号位),若真值 x =-26,请写出 x 的补码算术左移1位、2位、3位后 的表示形式以及对应的真值 a 、 b 、 c ,并对移位结果进行分析。 解析: x =-26=(-11010)2 [ x ]*=1,1100110
时间: 2024-12-08 15:18:45 浏览: 113
【练习9】对于8位计算机系统,其中包括1位符号位,真值x = -26 转换成二进制表示是 `(-11010)2`。由于是负数,我们需要将其转换成补码形式。
初始的补码形式是:
```text
[x]_补 = 1(符号位) + 11010(数值位)
```
即:
```text
[x]_补 = 11100110
```
1. **补码算术左移1位**:
- 左移一位后,符号位不变,数值位向左移动一位并补0,得到:
```text
[x]_补 << 1 = 111001100 (移位后补零)
```
- 对应的真值a是 `(-1 * 2^1) + (-1 * 2^0)`,即 `-6 - 2`,即 `-8`。
2. **补码算术左移2位**:
- 再次左移一位,符号位还是1,数值位再次补0,并移位:
```text
[x]_补 << 2 = 1110011000 (移位后补两个0)
```
- 对应的真值b是 `(-1 * 2^2) + (-1 * 2^1) + (-1 * 2^0)`,即 `-4 - 2 - 2`,即 `-8`。
3. **补码算术左移3位**:
- 左移三位相当于将所有位都左移,包括符号位,然后补三个0:
```text
[x]_补 << 3 = 00011100110 (符号位移到最高位,其余都是0)
```
- 但是,因为最高位是符号位,它变成了0,这意味着这是正数,实际值是:
```text
c = 1 * 2^(8-3 - 1) = 1 * 2^4 = 16
```
- 对应的真值c是正数 `16`,因为这里是无符号数的表示。
总结:虽然连续左移两次后,补码的形式看起来与原始补码相同,但由于二进制位的性质,实际真值发生了变化。在某些系统中,左移超过最低有效位时可能会有不同的解释规则。
阅读全文
相关推荐













