All answers I seem to find on how to find the 1s (flip the bits of the positive) and the 2s (flip the bits of the positive binary and add 1) complement doesn\'t seem to answer m
It doesn't matter if your starting number is positive or negative - in a two's complement system, -x
is the same as ~x + 1
. If your original number is positive, the result will be negative, and if the original number is negative, the result will be positive. 8-bit example - binary means 2's complement binary:
x (decimal) | -x (decimal) | x (binary) | -x (binary) | ~x (binary) | ~x+1 (binary)
------------+--------------+------------+-------------+-------------+---------------
5 | -5 | 0000 0101 | 1111 1011 | 1111 1010 | 1111 1011
-5 | 5 | 1111 1011 | 0000 0101 | 0000 0100 | 0000 0101
110 | -110 | 0110 1110 | 1001 0010 | 1001 0001 | 1001 0010
-38 | 38 | 1101 1010 | 0010 0110 | 0010 0101 | 0010 0110
Note the -x (binary)
column and the ~x+1 (binary)
column are the same.
If you need to get the 1's complement of a number, that's just ~x
.