擅长:python、mysql、java
<p>一个值的二补是一补加一。</p>
<p>基于此,您可以编写自己的转换函数:</p>
<pre><code>def to_binary(value):
result = ''
if value < 0:
result = '-'
value = ~value + 1
result += bin(value)
return result
</code></pre>
<p>结果如下:</p>
<pre><code>>>> to_binary(10)
'0b1010'
>>> to_binary(-10)
'-0b1010'
</code></pre>
<p>编辑:要显示前面没有减号的位,可以使用以下功能:</p>
<pre><code>def to_twoscomplement(bits, value):
if value < 0:
value = ( 1<<bits ) + value
formatstring = '{:0%ib}' % bits
return formatstring.format(value)
>>> to_twoscomplement(16, 3)
'0000000000000011'
>>> to_twoscomplement(16, -3)
'1111111111111101'
</code></pre>