擅长:python、mysql、java
<p>我相信你所指的是补数,你是在试图颠倒二进制数的位数。最自然的做法是使用XOR运算符。
考虑以下代码:</p>
<pre><code>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
</code></pre>
<p><code>Complement_binary</code>函数接收一个数字列表,并返回一个以字符串形式表示的数字列表(<code>get_bin</code>将数字转换为字符串中的二进制数字)。如果不需要字符串,可以删除<code>complemented.append(get_bin((i - 1) ^ num))</code>中的<code>get_bin</code>函数。</p>
<p><code>get_bin</code>函数的源代码:<a href="https://stackoverflow.com/a/21732313/6833761">https://stackoverflow.com/a/21732313/6833761</a>作者@Martin Thoma</p>