题目描述
小C在学习二进制运算,他了解到每个非负整数都有其二进制表示。例如,整数 5 可以被表示为二进制 "101",整数 11 可以被表示为二进制 "1011",并且除了 N = 0 外,任何二进制表示中都不含前导零。
二进制的反码表示是将每个 1 变为 0,每个 0 变为 1。例如,二进制数 "101" 的二进制反码为 "010"。现在小C想知道,给定一个十进制数 N,它的二进制反码对应的十进制数是多少。
首先,我们需要理解如何将一个十进制数转换为二进制,然后对其进行反码操作,最后将反码结果转换回十进制。
解题思路
- 转换为二进制:将给定的十进制数
N转换为二进制字符串。 - 反码操作:对二进制字符串进行反码操作,即将
1变为0,将0变为1。 - 转换回十进制:将反码后的二进制字符串转换回十进制数。
代码提示
我们可以使用 Python 的内置函数来完成这些操作。以下是代码的框架:
def solution(N: int) -> int:
# 将十进制数转换为二进制字符串
binary_str = bin(N)[2:] # 使用 bin() 函数,并去掉前缀 '0b'
# 对二进制字符串进行反码操作
inverted_binary_str = ''.join('1' if bit == '0' else '0' for bit in binary_str)
# 将反码后的二进制字符串转换回十进制数
result = int(inverted_binary_str, 2) # 使用 int() 函数,指定基数为 2
return result
if __name__ == '__main__':
print(solution(N=5) == 2)
print(solution(N=10) == 5)
print(solution(N=0) == 1)
关键步骤解释
bin(N)[2:]:将N转换为二进制字符串,并去掉前缀'0b'。''.join('1' if bit == '0' else '0' for bit in binary_str):对二进制字符串进行反码操作。int(inverted_binary_str, 2):将反码后的二进制字符串转换回十进制数。
在 Python 中,可以使用内置的 bin() 函数将十进制数转换为二进制表示。bin() 函数返回一个字符串,该字符串表示给定整数的二进制形式,并且以 '0b' 开头。
示例
decimal_number = 5
binary_representation = bin(decimal_number)
print(binary_representation) # 输出: '0b101'
去掉前缀 '0b'
如果你不需要二进制字符串的前缀 '0b',可以通过切片操作去掉它:
decimal_number = 5
binary_representation = bin(decimal_number)[2:]
print(binary_representation) # 输出: '101'
总结
- 使用
bin()函数将十进制数转换为二进制字符串。 - 使用切片操作
[2:]去掉二进制字符串的前缀'0b'。
希望这能帮助你理解如何在 Python 中将十进制数转换为二进制表示。