给出二进制转换为十进制整数的代码,二进制可以是负数
时间: 2024-05-08 16:18:35 浏览: 84
以下是二进制转换为十进制整数的 Python 代码,包括了负数的处理:
```python
def bin_to_dec(binary_str):
sign = 1
if binary_str[0] == '1':
sign = -1
binary_str = flip_bits(binary_str)
decimal_val = 0
for i in range(len(binary_str)):
if binary_str[i] == '1':
decimal_val += 2**(len(binary_str)-i-1)
return sign*decimal_val
def flip_bits(binary_str):
flipped_str = ''
for bit in binary_str:
if bit == '0':
flipped_str += '1'
else:
flipped_str += '0'
flipped_str = bin_to_dec(flipped_str) + 1
return bin(flipped_str)[2:]
# example usage
print(bin_to_dec('11011')) # prints 27
print(bin_to_dec('10000110')) # prints -122
```
该函数接受一个二进制字符串参数,并返回对应的十进制整数。如果字符串以 1 开头,那么它被解释为负数并进行了处理。`flip_bits()`函数将字符串反转并将每位取反,然后将其转换回十进制数加一,并返回新二进制字符串。`bin_to_dec()`函数对新字符串执行相同的操作,然后乘以-1并返回结果。
阅读全文