The `&` (bitwise AND) operator compares each bit of its first
operand to the corresponding bit of the second operand. If both bits are `1`'s, the corresponding bit of the result is set to `1`. Otherwise,
it sets the corresponding result bit to `0`.

Both operands must have an integral or enumeration type. The usual arithmetic conversions on each operand are performed. The result has the same type as the converted operands.

Because the bitwise AND operator has both associative and commutative properties, the compiler can rearrange the operands in an expression that contains more than one bitwise AND operator.

The following example shows the values of `a`, `b`, and
the result of `a & b` represented as 16-bit binary numbers:

bit pattern of a |
0000000001011100 |

bit pattern of b |
0000000000101110 |

bit pattern of a & b |
0000000000001100 |

Note:

The bitwise AND (`&`) should not be confused
with the logical AND. (`&&`) operator. For example,
`1 & 4` evaluates to 0

while

`1 && 4` evaluates to true

while