Catégories :

Fonctions d’expression au niveau du bit

BITSHIFTLEFT

Décale les bits d’une expression numérique de n positions vers la gauche.

Alias :

BIT_SHIFTLEFT

Voir aussi :

BITSHIFTRIGHT

Syntaxe

BITSHIFTLEFT( <expr1> , <n> )
Copy

Arguments

expr1

Cette expression doit correspondre à un type de données pouvant être converti en INTEGER.

n

Le nombre de bits du déplacement.

Renvoie

Cela renvoie un entier signé de 128 bits (16 octets), quels que soient la taille ou le type de données de la valeur de données d’entrée.

Notes sur l’utilisation

  • Si le type de données d’un argument est numérique, mais pas INTEGER (par exemple, FLOAT, DECIMAL, etc.), l’argument sera alors converti en INTEGER

  • Si le type de données de l’un des arguments est une chaîne (par exemple, VARCHAR), l’argument sera alors converti en INTEGER si possible. Par exemple, la chaîne « 12,3 » sera convertie en 12. Si la valeur ne peut pas être convertie en INTEGER, elle sera traitée comme NULL.

  • Si un argument est NULL, le résultat est NULL.

  • Le résultat est un entier signé. Si la valeur du bit de poids fort change (de 0 à 1 ou de 1 à 0), le signe du résultat est inversé. Par exemple, BITSHIFTLEFT(1, 127) renvoie un nombre négatif.

  • Les bits qui sont décalés au-delà de la fin de la valeur de sortie de 128 bits sont détruits.

Exemples

Cet exemple montre comment utiliser BITSHIFTLEFT et BITSHIFTRIGHT :

Créez une table et des données simples :

CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);
Copy
INSERT INTO bits (ID, bit1, bit2) VALUES 
    (   11,    1,     1),    -- Bits are all the same.
    (   24,    2,     4),    -- Bits are all different.
    (   42,    4,     2),    -- Bits are all different.
    ( 1624,   16,    24),    -- Bits overlap.
    (65504,    0, 65504),    -- Lots of bits (all but the low 6 bits)
    (    0, NULL,  NULL)     -- No bits
    ;
Copy

Exécutez la requête :

SELECT bit1, bit2, BITSHIFTLEFT(bit1, 1), BITSHIFTRIGHT(bit2, 1)
  FROM bits
  ORDER BY bit1;
Copy

Sortie :

+------+-------+-----------------------+------------------------+
| BIT1 |  BIT2 | BITSHIFTLEFT(BIT1, 1) | BITSHIFTRIGHT(BIT2, 1) |
|------+-------+-----------------------+------------------------|
|    0 | 65504 |                     0 |                  32752 |
|    1 |     1 |                     2 |                      0 |
|    2 |     4 |                     4 |                      2 |
|    4 |     2 |                     8 |                      1 |
|   16 |    24 |                    32 |                     12 |
| NULL |  NULL |                  NULL |                   NULL |
+------+-------+-----------------------+------------------------+
Copy