Home Java Java-tips Data Expressions Bitwise Operators

View Latest Questions

Bitwise Operators
Posted on: July 26, 2006 at 12:00 AM
Bitwise operators perform logical operations on each bit position.

# Bitwise Operators

• Integers (int and long) can be considered as collections of 32 or 64 bits.
• Bitwise operators perform logical operations on each bit position, where 1 is regarded as true and zero false.
• Bitwise and `(a & b)` - Result is 1 in every bit position where both operands have a 1.
• Bitwise or `(a | b)` - Result is 1 only in positions where one or both operands have a 1.
• Bitwise xor `(a ^ b)`- Result is 1 in positions where the two corresponding bits are different.
• Bitwise not `(~a)` - Unary operator. Result is each bit of operand inverted.
• Shift left `(a << n)` - Shifts bits n positions left. Zeros added on right.
• Shift right `(a >> n)` - Shifts bits n positions right. High-order bit inserted on left.
• Shift right `(a >>> n)` - Shifts bits n positions right. Zeros inserted at left.
• See Deitel&Deitel p 1117

# Bitwise Operators - Exercises

• For the following examples, note that 3 is 0000...0011, 5 is 0000...0101, and -1 is 1111...1111.
• `3 & 5 ____________________`
• `3 | 5 ____________________`
• `3 ^ 5 ____________________`
• `~3 ____________________`
• `5 << 2 ____________________`
• `5 >> 2 ____________________`
• `-1 >> 30 ____________________`
• `-1 >>> 30 ____________________`

# Bitwise Operators - Uses

• Efficient storage.
• Status bits. Eg, Mouse event key mask.
• Eg, representing Connect-Four board.
• Packing or unpacking values into a single int/long.
• Efficient computation
• On some (esp old) machines, shifting is faster than multiplying or dividing by powers of two.
• Problems
• How could you use bit operations to test whether a number is odd?
• How would you multiply by 256?

# End

Related Tags for Bitwise Operators: