我试图递归地将int转换为二进制字符串,但我真的不明白二进制字符串转换的整个正整数如何工作。
还发现,显然每个位置都像是2的力量的表现。
有关如何将正int转换为字符串表示的任何解释,如上面的Google搜索示例所示,非常有用。
答案 0 :(得分:6)
这是一个将int转换为二进制字符串的递归实现,这是我认为这个问题所要求的:
def recursive_bin(i):
if i == 0:
return ''
elif i < 0:
return '-' + recursive_bin(-i)
else:
return recursive_bin(i>>1) + str(i&1)
请注意,如果您只是尝试使用内置的bin()
函数来获取二进制字符串,这仅适用于递归练习。
这是有效的,因为i&1
会在i
(0
或1
)中提供最后一位,而i>>1
会移位i
中的所有位{1}}向右一位(相当于除以2)。以下是对6(110 2 )的工作原理的解释:
# 6 is 110 in binary
recursive_bin(6)
recursive_bin(6>>1) + str(6 & 1) -> recursive_bin(3) + '0'
recursive_bin(3>>1) + str(3 & 1) + '0' -> recursive_bin(1) + '1' + '0'
recursive_bin(1>>1) + str(1 & 1) + '10' -> recursive_bin(0) + '1' + '10'
recursive_bin(0) + '110' -> '' + '110'
# Final result is '110', since the base case of 0 returns an empty string
答案 1 :(得分:4)
Python有一个内置函数:
>>> bin(6)
"0b110"
反过来(有点):
>>> 0b110
6