Tous les produits
Search
Centre de documentation

AnalyticDB:Fonctions et opérateurs bit à bit

Dernière mise à jour :Aug 10, 2026

AnalyticDB for MySQL prend en charge les fonctions et opérateurs bit à bit suivants pour traiter les données binaires.

Fonction/opérateur Syntaxe Description
BIT_COUNT bit_count(x) Compte le nombre de bits définis sur 1 dans une valeur
& x & y ET bit à bit
~ ~x NON bit à bit (inverse tous les bits)
| x | y OU bit à bit
^ x ^ y OU exclusif (XOR) bit à bit
>> (BITWISE_RIGHT_SHIFT) x >> y Décale x vers la droite de y bits
<< (BITWISE_LEFT_SHIFT) x << y Décale x vers la gauche de y bits

BIT_COUNT

Syntaxe

bit_count(bigint x)
bit_count(double x)
bit_count(varchar x)

Description

Convertit l'argument en sa représentation binaire et renvoie le nombre de bits définis sur 1.

Type de retour : BIGINT

Remarques d'utilisation

  • Si l'argument est de type double, il est tronqué en bigint avant le calcul du nombre de bits. Par exemple, pi() (environ 3,14159) est tronqué en 3 (binaire : 11), ce qui donne 2 bits définis sur 1.

Exemples

SELECT bit_count(2);
-- 2 in binary is 10, which has 1 bit set to 1
+--------------+
| bit_count(2) |
+--------------+
|            1 |

SELECT bit_count(pi());
-- pi() is approximately 3.14159, truncated to 3 (binary: 11), which has 2 bits set to 1
+-----------------+
| bit_count(pi()) |
+-----------------+
|               2 |

SELECT bit_count('123');
-- '123' is cast to bigint 123 (binary: 1111011), which has 6 bits set to 1
+------------------+
| bit_count('123') |
+------------------+
|                6 |

& (ET bit à bit)

Description

Renvoie le ET bit à bit de deux valeurs. Chaque bit du résultat vaut 1 uniquement si les bits correspondants des deux opérandes valent 1.

Type de retour : BIGINT

Exemple

SELECT 12 & 15;
-- 12 in binary: 1100
-- 15 in binary: 1111
-- AND result:   1100 = 12
+---------------------+
| bitwise_and(12, 15) |
+---------------------+
|                  12 |

~ (NON bit à bit)

Description

Inverse tous les bits de l'opérande.

Type de retour : BIGINT

Exemple

SELECT 2 & ~1;
-- ~1 inverts all bits of 1, then AND with 2
+--------------------------------+
| bitwise_and(2, bitwise_not(1)) |
+--------------------------------+
|                              2 |

| (OU bit à bit)

Description

Renvoie le OU bit à bit de deux valeurs. Chaque bit du résultat vaut 1 si au moins un des bits correspondants des opérandes vaut 1.

Type de retour : BIGINT

Exemple

SELECT 29 | 15;
-- 29 in binary: 11101
-- 15 in binary: 01111
-- OR result:    11111 = 31
+--------------------+
| bitwise_or(29, 15) |
+--------------------+
|                 31 |

^ (OU exclusif bit à bit)

Description

Renvoie le OU exclusif (XOR) bit à bit de deux valeurs. Chaque bit du résultat vaut 1 si les bits correspondants des opérandes diffèrent.

Type de retour : BIGINT

Exemple

SELECT 1 ^ 10;
-- 1  in binary: 0001
-- 10 in binary: 1010
-- XOR result:   1011 = 11
+--------------------+
| bitwise_xor(1, 10) |
+--------------------+
|                 11 |

>> (BITWISE_RIGHT_SHIFT)

Syntaxe

bitwise_right_shift(bigint x, bigint y)
bitwise_right_shift(double x, double y)
bitwise_right_shift(varchar x, varchar y)

Description

Décale x vers la droite de y bits. Les bits décalés au-delà de la position de poids faible sont ignorés.

Type de retour : BIGINT

Remarques d'utilisation

  • Les arguments de type double et varchar sont tronqués en bigint avant le décalage.

Exemples

SELECT 3 >> 2;
-- 3 in binary: 11; right-shifting by 2 discards all bits, result is 0
+---------------------------+
| bitwise_right_shift(3, 2) |
+---------------------------+
|                         0 |

SELECT 3.4 >> 23.2;
-- 3.4 and 23.2 are truncated to 3 and 23; 3 >> 23 discards all bits, result is 0
+--------------------------------+
| bitwise_right_shift(3.4, 23.2) |
+--------------------------------+
|                              0 |

<< (BITWISE_LEFT_SHIFT)

Syntaxe

bitwise_left_shift(bigint x, bigint y)
bitwise_left_shift(double x, double y)
bitwise_left_shift(varchar x, varchar y)

Description

Décale x vers la gauche de y bits. Les positions de bits libérées à droite sont remplies par des zéros.

Type de retour : BIGINT

Remarques d'utilisation

  • Les arguments de type double et varchar sont tronqués en bigint avant le décalage.

Exemples

SELECT 3 << 2;
-- 3 in binary: 11; left-shifting by 2 gives 1100 = 12
+--------------------------+
| bitwise_left_shift(3, 2) |
+--------------------------+
|                       12 |

SELECT '3' << '2';
-- '3' and '2' are cast to bigint 3 and 2; result is 12
+------------------------------+
| bitwise_left_shift('3', '2') |
+------------------------------+
|                           12 |

SELECT 3.4 << 23.2;
-- 3.4 and 23.2 are truncated to 3 and 23; 3 << 23 = 25165824
+-------------------------------+
| bitwise_left_shift(3.4, 23.2) |
+-------------------------------+
|                      25165824 |