To write programs at the machine-level, often you need to deal with binary numbers directly and perform operations at the bit-level. Java provides the bitwise operators and shift operators defined in Table F.1.
Operator | Name | Example (using bytes in the example) | Description |
---|---|---|---|
& | Bitwise AND | 10101110 & 10010010 yields 10000010 | The AND of two corresponding bits yields a 1 if both bits are 1. |
Bitwise inclusive OR | 10101110 10010010 yields 10111110 | The OR of two corresponding bits yields a 1 if either bit is 1. | |
^ | Bitwise exclusive OR | 10101110 ^ 10010010 yields 00111100 | The XOR of two corresponding bits yields a 1 only if two bits are different. |
~ | One's complement | ~ 10101110 yields 01010001 | The operator toggles each bit from 0 to 1 and from 1 to 0 |
<< | Left shift | 10101110 << 2 yields 10111000 | Shift bits in the first operand left by the number of bits specified in the second operand, filling with 0s on the right. |
>> | Right shift with sign extension | 10101110 >> 2 yields 11101011 00101110 >> 2 yields 00001011 | Shift bit in the first operand right by the number of bits specified in the second operand, filling with the highest (sign) bit on the left. |
>>> | Right shift with zero extension | 10101110 >>> 2 yields 00101011 00101110 >>> 2 yields 00001011 | Shift bit in the first operand right by the number of bits specified in the second operand, filling with 0s on the left. |
The bit operators apply only to integer types ( byte , short , int , and long ). A character involved in a bit operation is converted to an integer. All bitwise operators can form bitwise assignment operators, such as = , = , <<= , >>= , and >>>= .