Bytecode
Type | Description |
u1 | ineg opcode = 0x74 (116) |
Stack
..., value => ..., result
Pops an int off the stack, negates it, and pushes the negated integer value back onto
the stack. This is the same as multiplying the integer by -1. The value
must be of type int
. It is popped from the operand stack. The int
result is the arithmetic negation of value, -value. The result
is pushed onto the operand stack.
For int
values, negation is the same as subtraction
from zero. Because the Java Virtual Machine uses two's-complement representation for
integers and the range of two's-complement values is not symmetric, the negation of the
maximum negative int
results in that same maximum negative number. Despite
the fact that overflow has occurred, no exception is thrown.
For all int
values x
, -x
equals (~x) + 1
.
Notes
Because of the two's-complement representation used for negative numbers, negating Integer.MIN_VALUE actually produces Integer.MIN_VALUE, not Integer.MAX_VALUE as you might expect.