Java: Negation, Bitwise Not, and Boolean Not

By John Paul Mueller

There are two types of unary operations in Java that you should view together so that you don’t misunderstand them later on. Negation is the act of setting a value to its negative version — the value of 2 becomes –2.

Some math-related tasks require that you negate a value in order to use it. In some cases, people confuse negation with subtraction, but subtraction is a binary operation and negation is a unary operation.

Negation is the act of setting a value to its negative equivalent. A value of 2 becomes –2.

Contrast negation with the bitwise Not operation, which you implement by using the ~ operator. The Not operation reverses each of the bits in a value. All of the 0s become 1s and vice versa. The Not operation is often used in Boolean-related tasks. It helps an application consider the logic of a task.

The term bitwise means to perform a task a single bit at a time, rather than using the entire value. So, a bitwise Not operation looks at each bit individually — any 1 becomes a 0, and vice versa. Consequently, when you have a value of 5, which in binary is 00000101, it becomes a negative six, which in binary is 11111010. Notice how the bits are precisely reversed in value.

To make things even more confusing, there’s a second Not operation called a Boolean Not operation that works on Boolean values. This operation relies on the ! operator. The bitwise operator (~) won’t work on Boolean values and the logical operator (!) won’t work on values other than Boolean.

Boolean values are either true or false. When you Not a Boolean value, you turn it from true to false, or from false to true.