The bitwise operators operate on the bits in integer values.

There are six bitwise operators, as shown in the following table.

Operator | Description |
---|---|

& | Bitwise AND operator |

| | Bitwise OR operator |

^ | Bitwise Exclusive OR (XOR) operator |

~ | Bitwise NOT operator, also called the 1's complement operator |

>> | Bitwise shift right operator |

<< | Bitwise shift left operator |

All of Bitwise Operators only operate on integer types.

The ~ operator is a unary operator-it applies to one operand-and the others are binary operators.

The bitwise AND operator, &, combines the corresponding bits of its operands in such a way that if both bits are 1, the resulting bit is 1; otherwise, the resulting bit is 0.

Suppose you declare the following variables:

int x = 13; int y = 6; int z = x & y; // AND corresponding bits of x and y

z will have the value 4 (binary 100). This is because the corresponding bits in x and y are combined as follows:

x 0 0 0 0 1 1 0 1 y 0 0 0 0 0 1 1 0 x & y 0 0 0 0 0 1 0 0

The bitwise OR operator, |, results in 1 if either or both of the corresponding bits are 1; otherwise, the result is 0.

If you combine the same values of x and y using the | operator in a statement such as this:

int z = x | y; // OR the bits of x and y

the result would be as follows:

x 0 0 0 0 1 1 0 1 y 0 0 0 0 0 1 1 0 x | y 0 0 0 0 1 1 1 1

The value stored in z would therefore be 15 (binary 1111).

The bitwise XOR operator, ^, produces a 1 if both bits are different, and 0 if they're the same.

int z = x ^ y; // Exclusive OR the bits of x and y

This results in z containing the value 11 (binary 1011), because the bits combine as follows:

x 0 0 0 0 1 1 0 1 y 0 0 0 0 0 1 1 0 x ^ y 0 0 0 0 1 0 1 1

The unary operator, ~, flips the bits of its operand, so 1 becomes 0, and 0 becomes 1.

You can apply this operator to x with the value 13:

int z = ~x; // Store 1's complement of x

After executing this statement, z will have the value 14. The bits are set as follows:

x 0 0 0 0 1 1 0 1 ~x 1 1 1 1 0 0 1 0

- Using Bitwise Operators to check mask flag
- Mask to select multiple bits from a variable.
- Displaying binary values
- Using the bitwise | operator
- Use binary OR operator to change character case
- Using bitwise &
- Operating exclusively with XOR
- ~ (complement) and ! (not) operators