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?
the MSB is 0, hence (-17)2 cannot represented in 2's complement representation with 5 bit, therefore (-17) in 2's complement is simply (10001)2 = (17)10 .
In 2s-complement representation, we represent a positive number as it is and negative number by its corresponding 2s-complement, so we can use the same circuit to perform addition and subtraction.
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'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With