get_bin = lambda x: format(x, 'b')
def Complement_binary(x):
complemented = []
for num in x:
i = 1
while i <= num:
i = i << 1
complemented.append(get_bin((i - 1) ^ num))
return complemented
def reverse_binary(input):
reversed = []
for x in [list(str(x)) for x in input]:
reversed.append(''.join(['%s' % (int(x) ^ 1) for x in x]))
return reversed
if __name__ == '__main__':
print(reverse_binary([1, 10, 101]))
我相信你所指的是补数,你是在试图颠倒二进制数的位数。最自然的做法是使用XOR运算符。 考虑以下代码:
Complement_binary
函数接收一个数字列表,并返回一个以字符串形式表示的数字列表(get_bin
将数字转换为字符串中的二进制数字)。如果不需要字符串,可以删除complemented.append(get_bin((i - 1) ^ num))
中的get_bin
函数。get_bin
函数的源代码:https://stackoverflow.com/a/21732313/6833761作者@Martin Thoma你不能把[0,01,010]存储在一个列表中,因为它变成了[0,1,10],但是你可以使用字符串
你能用字符串来表示你的二进制数吗?然后您可以简单地执行以下操作:
相关问题 更多 >
编程相关推荐