If I print out
~100 in Java, I get
-101. I’m trying to work this out by hand.
The NOT (
~) operator inverts all bits.
100 in binary is
inverting its bits gives:
Now what? How do I get
Java uses two’s complement (see §4.2 Primitive Types and Values) To negate, you take the complement and add one.
-x = ~x + 1 ~x = -x - 1 ~100 = -100 - 1
Another way to think about it is to note:
11111111111111111111111111111111 = -1
11111111111111111111111111111111 (-1) - 11111111111111111111111110011011 (~x) = 1100100 (100) -1 - ~x = 100 -1 - 100 = ~x ~x = -101
Most systems today work with the 2’s complement system. In this system positive numbers are same as in the old binary system, while negative numbers are different (this help map another negative number using the same amount of bits)
If you want to take a number in this system and translate it back to old fashion binary: