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()
|