Two's complement method - generates -(x + 1).
for example when JavaScript encounters the Tilde he uses this method:
~5 = -(5+1) = -6.
Fine - lets go deeper.
Now lets talk about the Two's complement method.
5 = 0000 0101
Flip = 1111 1010
add one = 1111 1011
so 1111 1011 is -5.
how ?
again : flip :
0000 0100
add one :
0000 0101
And so it was -5.
So how does this settle with ~5=-6 ?
where this -6 came from ?
First of all, you need to realize that ~ is the bitwise flip operator, which is not the same as the negate operator -. ~ does only do the bitwise flipping, but the negate operator - does bitwise flipping and add one (for integers).
As you've explained, if yo want to go from a postive number n to -n using the two complement method you bitwise flip/not n and add 1. ~n is just the bit-wise not meaning that ~n=-n-1.
For instance:
5 = 0000 0101
Flipped (~5) = 1111 1010
So, which number does 1111 1010 represent? Since the first digit is a 1 we know it's a negative value. To find which value, do
-(flip(1111 1010) + 1) =
-(0000 0101 + 1)
-(0000 0110) =
-6
~5 = -(5 + 1) = -6
so far so good. However, ~ is not the two's complement, it's the binary inversion operator.
5 = 0000 0101
flip : 1111 1010
which is -6
does that make it clear?
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