-10的原码反码补码
时间: 2024-12-30 10:30:53 浏览: 7
### 数字-10的原码、反码和补码
对于8位二进制表示:
#### 原码
- 对于负数而言,最高位为符号位,即第一位设为`1`来代表这是一个负数值。
- 绝对值部分转换成7位二进制形式。
因此 `-10` 的绝对值 `10` 转换成二进制是 `1010` ,为了填充到总共八位,在前面加上三个零变成 `0001010` 。最后再加上符号位,则有:
\[ [-10]_{\text{原}}=1000\,1010 \][^2]
#### 反码
- 正数的反码与其原码相同;而负数的反码则是对其原码除符号位外按位取反。
所以 `-10` 的反码就是将 `[1000 1010]` 中除了最左边一位以外的所有位都反转(0变1,1变0),得到的结果如下所示:
\[ [-10]_{\text{反}}=1111\,0101 \][^3]
#### 补码
- 正数的补码等于其本身;
- 负数的补码为其反码加一。
基于上述得出的反码再加一可得最终结果:
\[ [-10]_{\text{补}}=1111\,0110 \]
```python
def show_code(num):
bit_length = 8
# Calculate Original Code
original_code = format((abs(num) & ((1 << (bit_length - 1)) - 1)) | (-num & (1 << (bit_length - 1))), '0' + str(bit_length) + 'b')
# Calculate Complement Code
complement_code = ''.join(['1' if b=='0' else '0' for b in original_code])[::-1].replace('1', '2', 1).replace('0', '1').replace('2', '0')[::-1]
# Calculate Supplemental Code by adding one to the complement code
supplemental_code_int = int(complement_code, 2)+1
supplemental_code = bin(supplemental_code_int)[2:].zfill(8)[-num}: {original_code}")
print(f"Complement Code of {-num}: {complement_code}")
print(f"Supplemental Code of {-num}: {supplemental_code}")
show_code(-10)
```
阅读全文