# 12.12. Bit Functions

Table 12.16. Bitwise Functions

Name Description
`BIT_COUNT()` Return the number of bits that are set
``` &``` Bitwise AND
`~` Invert bits
`|` Bitwise OR
`^` Bitwise XOR
`<<` Left shift
``` >>``` Right shift

MySQL uses `BIGINT` (64-bit) arithmetic for bit operations, so these operators have a maximum range of 64 bits.

• Bitwise OR:

`mysql> `SELECT 29 | 15;`        -> 31`

The result is an unsigned 64-bit integer.

• Bitwise AND:

```mysql> ```SELECT 29 &
15;```        -> 13```

The result is an unsigned 64-bit integer.

• Bitwise XOR:

`mysql> `SELECT 1 ^ 1;`        -> 0mysql> `SELECT 1 ^ 0;`        -> 1mysql> `SELECT 11 ^ 3;`        -> 8`

The result is an unsigned 64-bit integer.

• Shifts a longlong (`BIGINT`) number to the left.

```mysql> ```SELECT 1 <<
2;```        -> 4```

The result is an unsigned 64-bit integer. The value is truncated to 64 bits. In particular, if the shift count is greater or equal to the width of an unsigned 64-bit number, the result is zero.

• Shifts a longlong (`BIGINT`) number to the right.

```mysql> ```SELECT 4 >>
2;```        -> 1```

The result is an unsigned 64-bit integer. The value is truncated to 64 bits. In particular, if the shift count is greater or equal to the width of an unsigned 64-bit number, the result is zero.

• Invert all bits.

`mysql> `SELECT 5 & ~1;`        -> 4`

The result is an unsigned 64-bit integer.

• Returns the number of bits that are set in the argument `N`.

```mysql> ```SELECT BIT_COUNT(29),
BIT_COUNT(b'101010');```        -> 4, 3```

Spec-Zone.ru - all specs in one place