Bit functions and operators comprise
BIT_COUNT()
,
BIT_AND()
,
BIT_OR()
,
BIT_XOR()
,
&
,

,
^
,
~
,
<<
, and
>>
.
(BIT_AND()
,
BIT_OR()
, and
BIT_XOR()
are aggregate functions
described at Section 12.19.1, “GROUP BY (Aggregate) Function Descriptions”.) Bit functions
and operators require BIGINT
(64bit integer) arguments and return
BIGINT
values, so they have a
maximum range of 64 bits. Arguments of other types (such as the
BINARY
and
VARBINARY
binary string types) are
converted to BIGINT
and truncation
might occur.
The following list describes available bit functions and operators:
Bitwise OR:
mysql> SELECT 29  15;
> 31
The result is an unsigned 64bit integer.
Bitwise AND:
mysql> SELECT 29 & 15;
> 13
The result is an unsigned 64bit integer.
Bitwise XOR:
mysql>SELECT 1 ^ 1;
> 0 mysql>SELECT 1 ^ 0;
> 1 mysql>SELECT 11 ^ 3;
> 8
The result is an unsigned 64bit integer.
Shifts a longlong (BIGINT
)
number to the left.
mysql> SELECT 1 << 2;
> 4
The result is an unsigned 64bit integer. The value is truncated to 64 bits. In particular, if the shift count is greater or equal to the width of an unsigned 64bit number, the result is zero.
Shifts a longlong (BIGINT
)
number to the right.
mysql> SELECT 4 >> 2;
> 1
The result is an unsigned 64bit integer. The value is truncated to 64 bits. In particular, if the shift count is greater or equal to the width of an unsigned 64bit number, the result is zero.
Invert all bits.
mysql> SELECT 5 & ~1;
> 4
The result is an unsigned 64bit integer.
Returns the number of bits that are set in the argument
N
.
mysql> SELECT BIT_COUNT(29), BIT_COUNT(b'101010');
> 4, 3