根据搜索结果,反推二进制的方法可分为以下两类,分别适用于不同场景:
一、二进制取反操作(按位取反)
Python实现 使用 `~` 运算符直接取反,但需注意Python中负数表示为补码,需额外减一得到真实反码:
```python
num = 12
inverted_num = ~num - 1
print(inverted_num) 输出 -13
```
或通过异或法逐位取反:
```python
def bitwiseComplement(n):
if n == 0:
return 1
temp1 = 1
while temp1 < n:
n ^= temp1
temp1 <<= 1
return n
print(bitwiseComplement(12)) 输出 -13
```
Java实现
通过循环与异或操作实现:
```java
public static int bitwiseComplement(int n) {
int result = 0;
for (int i = 0; i < 32; i++) {
result |= (n & 1) ^ 1;
n >>= 1;
}
return result;
}
```
二、二进制数转换(十进制转二进制)
整数转换
采用除2取余法,反向排列余数:
```python
def decimalToBinary(n):
if n == 0:
return "0"
binary = ""
while n > 0:
binary = str(n % 2) + binary
n //= 2
return binary
print(decimalToBinary(5)) 输出 101
```
负数处理
补码转原码需先取反加一:
```python
def twosComplementToDecimal(binary_str):
if binary_str == '1':
inverted = ''.join('0' if bit == '1' else '1' for bit in binary_str)
return -((1 << len(binary_str)) - int(inverted, 2))
return int(binary_str, 2)
print(twosComplementToDecimal('11111001')) 输出 -6
```
说明
取反操作: 适用于位运算场景,如计算补码、逻辑判断等。 转换操作