All of the Java integer types are represented by binary numbers.
For example, the byte value for 42 in binary is 00101010.
Each position represents a power of two.
20 is at the rightmost bit. The next bit position to the left would be 21 , or 2, continuing toward the left with 22 , or 4, then 8, 16, 32, and so on.So 42 has 1 bits set at positions 1, 3, and 5 (counting from 0 at the right).
42 is the sum of 21 + 23 + 25, which is 2 + 8 + 32.All of the integer types except char are signed integers.
Java uses two's complement to store integers.
The negative numbers are represented by inverting 1's to 0's and vice versa for all of the bits in a value, then adding 1 to the result.
For example, -42 is represented by inverting all of the bits in 42, or 00101010, which yields 11010101, then adding 1, which results in 11010110, or -42.
To decode a negative number, first invert all of the bits, then add 1.
For example, -42, or 11010110 inverted, yields 00101001, or 41, so when you add 1 you get 42.