Python:递归地将int转换为二进制字符串

时间:2012-11-28 00:01:54

标签: python

我试图递归地将int转换为二进制字符串,但我真的不明白二进制字符串转换的整个正整数如何工作。

还发现,显然每个位置都像是2的力量的表现。

有关如何将正int转换为字符串表示的任何解释,如上面的Google搜索示例所示,非常有用。

2 个答案:

答案 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会在i01)中提供最后一位,而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