39 lines
1.4 KiB
Python
39 lines
1.4 KiB
Python
def reverse_bits(decimal_num):
|
||
# 将十进制数转换为二进制字符串,并去掉"0b"
|
||
binary_str = bin(decimal_num & 0xFF)[2:] # 确保只取8位
|
||
# 使用零填充到8位
|
||
padded_binary_str = binary_str.zfill(8)
|
||
# 颠倒二进制字符串
|
||
reversed_binary_str = padded_binary_str[::-1]
|
||
return padded_binary_str
|
||
|
||
def to_signed_decimal(binary_str):
|
||
# 将二进制字符串转换为有符号十进制数
|
||
if binary_str[0] == '1':
|
||
# 如果最高位是1,表示是负数
|
||
return int(binary_str, 2) - (1 << len(binary_str))
|
||
else:
|
||
return int(binary_str, 2)
|
||
|
||
def main():
|
||
# 输入三个十进制数
|
||
numbers = []
|
||
for i in range(1, 4):
|
||
num = int(input(f"请输入第{i}字节小端数: "))
|
||
numbers.append(num)
|
||
|
||
# 存储所有颠倒后的二进制结果
|
||
combined_binary = ""
|
||
for num in numbers:
|
||
reversed_bin = reverse_bits(num)
|
||
combined_binary += reversed_bin
|
||
|
||
print(f"合并后的颠倒二进制数: {combined_binary}")
|
||
|
||
# 将合并后的二进制字符串转换为有符号十进制
|
||
signed_decimal = to_signed_decimal(combined_binary)
|
||
print(f"合并后的颠倒二进制数对应的有符号十进制数: {signed_decimal}")
|
||
print(f"电压值: {signed_decimal/8388607*2.5*4}")
|
||
|
||
if __name__ == "__main__":
|
||
main() |