Format negative integers in two's complement representation

故事扮演 提交于 2019-12-01 02:41:03

问题


I would like to represent an negative integer in bits, using two's complement representation. Using standard Python bit representation utilities doesn't help much:

>>> bin(-5)
'-0b101'
>>> format(-5, 'b')
'-101'

-5 in two's complement is represented as 1011. How do I do this?


回答1:


Python's integers already use two's complement, but since they have arbitrary precision, the binary representation of negative numbers would have an infinite string of 1s at the start, much like positive numbers have an infinite string of 0s. Since this obviously can't be shown, it is represented with a minus sign instead.

If you want the binary representation for a specific width, you can just use modulo.

>>> bin(-5)
'-0b101'
>>> bin(-5 % (1<<32))
'0b11111111111111111111111111111011'


来源:https://stackoverflow.com/questions/16255496/format-negative-integers-in-twos-complement-representation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!