打印二进制然后否则在python中没有补码

时间:2014-01-21 13:26:07

标签: python bit-manipulation negate

我是python的新手并尝试做类似的事情:

a=23
"{0:b}".format(a)

---> '10111'

然后我想否定它没有补充,结果应该是'01000'但似乎什么都没有用

其次我必须用0填充左侧,我发现类似

"{0:12b}".format(a)
'       10111'

但它只是让字符串更长时间填充空白

编辑:对我来说完美的解决方案是

"{0:12b}".format(a)
'000000010110' 
"{0:12b}".format(~a)
'111111101001'

(当然这不起作用)

1 个答案:

答案 0 :(得分:3)

0放在12前面,用零填充输出。

In [1]: "{0:012b}".format(a)
Out[1]: '000000010111'

对于那些comp,你可以进行字符串操作或数学方式:

 In [2]: "{0:012b}".format(2**12-1-a)
 Out[2]: '111111101000'

只需将2**12更改为您要显示的位数

即可