one’s complement arithmetic : Java Glossary
©1996-2017 Roedy Green of Canadian Mind Products
- one’s complement arithmetic
Java internally uses (or emulates) two’s complement arithmetic for integers.
Some hardware architectures, particularly older ones, use one’s complement
arithmetic. Positive numbers are stored in binary. That means that for example the
number 13 would be written 0x0d = 00001101 = 1*8 + 1*4 + 0*2 + 1*1. The high
order bit is called the sign bit. For signed quantities such as byte, short int and
long, when that high order bit is a 1, we consider the number negative. To represent
a negative number we simply invert each bit. We would write -13 this way:
0x0d ⇒ 00001101 ⇒
11110010 ⇒ 0xf2. Whenever
you do any operation on a byte, it is first sign extended to an int. Don’t
confuse one’s complement with
one’s compliments — your
aggregate flattering activities.