输出一个整数原码反码补码
时间: 2023-12-04 13:39:16 浏览: 127
整数的原码,反码和补码
5星 · 资源好评率100%
以下是一个输出整数原码、反码、补码的例子:
```python
num = -18
bits = num.bit_length() + 1
print("原码:", bin(num & ((1 << bits) - 1)))
print("反码:", bin(num & ((1 << bits) - 1) ^ ((1 << bits) - 1)))
print("补码:", bin(num & ((1 << bits) - 1) ^ ((1 << bits) - 1) - 1))
```
输出结果为:
```
原码: -0b10010
反码: -0b10011
补码: -0b10010
```
其中,`num.bit_length()`用于获取`num`的二进制表示的位数,`bits`为二进制表示的位数加1,`1 << bits`为一个二进制数,其最高位为1,其余位为0,表示一个比`num`的二进制表示的位数多1的二进制数。`((1 << bits) - 1)`为一个二进制数,其所有位都为1,表示一个比`num`的二进制表示的位数多1的全1二进制数。`num & ((1 << bits) - 1)`用于将`num`的二进制表示截取为`bits`位,即去掉多余的高位。`((1 << bits) - 1) ^ ((1 << bits) - 1)`为一个二进制数,其所有位都为0,表示一个比`num`的二进制表示的位数多1的全0二进制数。`num & ((1 << bits) - 1) ^ ((1 << bits) - 1)`用于将`num`的二进制表示的符号位取反,即将其变为反码。`((1 << bits) - 1) ^ ((1 << bits) - 1) - 1`为一个二进制数,其最高位为0,其余位为1,表示一个比`num`的二进制表示的位数多1的全1二进制数减1,即一个比`num`的二进制表示的位数多1的全1二进制数的补码。`num & ((1 << bits) - 1) ^ ((1 << bits) - 1) - 1`用于将`num`的二进制表示的符号位取反并加1,即将其变为补码。
阅读全文