Aller au contenu principal

Qu'est-ce que la fonction BITDECALG ?

Définition
La fonction BITDECALG décale vers la gauche les bits d'un entier positif d'un nombre défini de positions, ce qui revient à multiplier ce nombre par 2 élevé à la puissance du décalage.

BITDECALG (BITLSHIFT en anglais) te sert quand tu documentes ou reproduis dans Excel une opération que le code fait nativement au niveau des bits, comme construire un masque ou configurer un registre. Elle t'évite de recalculer toi-même la puissance de 2 correspondante à chaque décalage.

Elle s'adresse surtout aux développeurs, ingénieurs embarqués et data scientists qui modélisent des opérations bas niveau : chaque décalage d'une position multiplie le nombre par 2, et Excel gère des entiers jusqu'à 48 bits.

Syntaxe

=BITDECALG(nombre; décalage)

Clique sur un argument pour aller à son explication.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction BITDECALG

Deux arguments, dans cet ordre et tous les deux obligatoires : d'abord nombre, l'entier que tu veux décaler, puis décalage, le nombre de positions vers la gauche. Garde en tête que chaque position de décalage multiplie ton nombre par 2, donc un décalage de 3 revient à multiplier par 8.

1

nombre

: l'entier positif dont tu veux décaler les bits vers la gauche

Il doit être supérieur ou égal à zéro. Excel travaille avec des entiers sur 48 bits, donc ton nombre de départ doit rester dans cette plage.

En binaire, chaque bit du nombre sera décalé vers la gauche (vers les positions de poids plus fort). Par exemple, 5 s'écrit 101 en binaire ; décalé de 2 positions, il devient 10100, soit 20 en décimal.

2

décalage

: le nombre de positions de décalage vers la gauche

Chaque position décalée multiplie le nombre par 2. Par exemple, un décalage de 3 équivaut à multiplier par 2³ = 8. Si tu passes 0, le nombre reste inchangé.

Mathématiquement, =BITDECALG(nombre; n) = nombre × 2^n. Sur un processeur, cette opération est une instruction élémentaire, beaucoup plus rapide qu'une multiplication générique.

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment multiplier un nombre par une puissance de 2 avec la fonction BITDECALG

Tu prépares la table de référence d'un algorithme de hachage avant de le coder, et chaque entrée y est multipliée par une puissance de 2. Tes valeurs de base sont listées avec le nombre de crans à appliquer, et tu veux la valeur décalée sur toute la colonne en une recopie. La fonction BITDECALG pousse les bits vers la gauche et reproduit exactement l'instruction que le processeur exécutera.

Les étapes
  1. 1
    Dans une cellule, écris =BITDECALG(.
  2. 2
    En 1er argument : clique sur la cellule qui contient la valeur à décaler, A2. Elle affiche 3, et la fonction BITDECALG raisonne sur la forme binaire de ce nombre, 11, plutôt que sur le chiffre lui-même.
  3. 3
    En 2ᵉ argument : clique sur la cellule du nombre de crans à appliquer, B2. Elle vaut 2 sur cette ligne. Chaque cran ajoute un zéro à droite de l'écriture binaire, si bien que 11 devient 1100, soit 12.
  4. 4
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. Les deux références étant relatives, chaque ligne reprend sa propre valeur de départ et son propre nombre de crans.
Au final, ta formule devrait ressembler à ça :=BITDECALG(A2; B2)
Explication
La fonction BITDECALG pousse la représentation binaire de 3 (11) de deux crans vers la gauche et obtient 1100, soit 12. Chaque cran ajouté double la valeur, donc décaler de 2 revient à multiplier par 4 et décaler de 3 revient à multiplier par 8 (la ligne 7 monte ainsi à 56).
Exemple 2

Comment générer le masque binaire d'un bit avec la fonction BITDECALG

Tu rédiges la documentation d'un microcontrôleur dont chaque fonction matérielle s'active par un bit précis du registre de contrôle. La datasheet te donne la position de chaque bit, mais ton code a besoin de la valeur décimale du masque correspondant. La fonction BITDECALG construit ce masque en déplaçant un simple 1 jusqu'à la position voulue.

Les étapes
  1. 1
    Dans une cellule, écris =BITDECALG(.
  2. 2
    En 1er argument : saisis la valeur de départ de tout masque, 1. Un seul bit est allumé dans ce nombre, et c'est celui du rang le plus bas.
  3. 3
    En 2ᵉ argument : clique sur la cellule où tu as reporté la position lue dans la datasheet, B2. Le 1 monte alors du nombre de crans indiqué et se retrouve exactement à ce rang, ce qui fabrique le masque cherché.
  4. 4
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. Le 1 reste écrit en dur à chaque ligne et seule la position change, ce qui donne 8 pour le bit 3 et 1024 pour le bit 10.
Voici la formule que tu obtiens à la fin :=BITDECALG(1; B2)
Explication
Partir de 1 (un seul bit allumé en position 0) et le décaler de n crans fabrique le masque du bit n. Le bit 3 donne 8, le bit 5 donne 32, le bit 10 donne 1024 : à chaque fois la puissance de 2 correspondante, obtenue sans calcul à la main et sans risque d'erreur de recopie.
Exemple 3

Comment assembler deux octets en un mot 16 bits en combinant la fonction BITDECALG et la fonction BITOU

Tu prépares les trames d'un protocole série où chaque valeur voyage en deux octets séparés, et le récepteur attend un unique mot de 16 bits. Ta feuille contient les deux octets dans deux colonnes, et il te faut la valeur assemblée à transmettre. La fonction BITDECALG place le premier octet en haut du mot, puis un OU binaire vient y loger le second.

Les étapes
  1. 1
    Dans une cellule, écris =BITOU(.
  2. 2
    En 1er argument : écris le décalage de l'octet de poids fort et referme-le, BITDECALG(A2; 8). La fonction BITDECALG pousse cet octet de huit crans vers la gauche, ce qui l'installe dans la moitié haute du mot et laisse les huit positions basses à zéro.
  3. 3
    En 2ᵉ argument : clique sur la cellule de l'octet de poids faible, B2. La fonction BITOU allume dans le résultat tout bit allumé d'un côté ou de l'autre, si bien que cet octet vient se loger dans les positions laissées libres sans rien écraser.
  4. 4
    Ferme la parenthèse de la fonction BITOU et appuie sur Entrée. Il n'y en a qu'une seule à taper, puisque celle de la fonction BITDECALG a déjà été refermée à l'étape précédente.
Une fois les morceaux assemblés, ta formule donne ça :=BITOU(BITDECALG(A2; 8); B2)
Explication
Décaler l'octet de poids fort de 8 crans lui réserve la moitié haute du mot et laisse huit positions vides en dessous. La fonction BITOU vient déposer l'octet de poids faible dans ces positions libres, sans écraser quoi que ce soit. Les deux octets pleins (255 et 255) remplissent ainsi les 16 bits et donnent 65535, la valeur maximale d'un mot de cette taille.
Le combo gagnant
BITDECALG(1;n) fabrique le masque du bit n, et BITOU les fusionne : =BITOU(BITDECALG(1;3);BITDECALG(1;5)) allume les bits 3 et 5 d'un coup et renvoie 40 (8 + 32). C'est la base d'un système de flags binaires monté dans Excel.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction BITDECALG

BITDECALG est pointilleuse sur ce que tu lui donnes : elle ne digère que des entiers positifs ou zéro. Un nombre négatif renvoie aussitôt #NOMBRE!, un décimal comme 5,5 est tronqué à 5 en silence (sans le moindre avertissement), et un décalage trop ambitieux qui pousse le résultat au-delà des 48 bits d'Excel déclenche lui aussi #NOMBRE!.

Utiliser un nombre négatif

BITDECALG attend des entiers positifs ou zéro. =BITDECALG(-5;2) retourne #NOMBRE! car les opérations sur bits travaillent avec des entiers non signés.

Solution : Vérifie que ton argument nombre est supérieur ou égal à zéro avant d'appeler la fonction : =BITDECALG(5;2) retourne bien 20.

Décalage trop important, dépassement 48 bits

Si le résultat dépasse la capacité d'Excel (48 bits), la fonction retourne #NOMBRE!. Par exemple, =BITDECALG(1000000;40) génère un nombre bien supérieur à 2^48.

Solution : Garde tes décalages raisonnables. Pour des valeurs de départ importantes, teste d'abord avec =PUISSANCE(2;décalage)*nombre pour estimer l'ordre de grandeur avant d'utiliser BITDECALG.

Utiliser des nombres décimaux

BITDECALG attend des entiers. Si tu passes 5,5, Excel tronque silencieusement à 5 sans avertir. Ce comportement peut entraîner des résultats inattendus si la troncature n'était pas souhaitée.

Solution : Utilise ENT() ou ARRONDI.INF() pour convertir explicitement tes valeurs en entiers avant de les passer à BITDECALG : =BITDECALG(ENT(A1);B1).

Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec BITDECALG

1Astuce

Visualiser le résultat en binaire

Pour vérifier visuellement qu'un décalage produit le bon pattern de bits, combine BITDECALG avec DECBIN : =DECBIN(BITDECALG(5;2)) retourne 10100, la représentation binaire de 20.
C'est très utile pour déboguer des configurations de registres ou enseigner le concept.

2Astuce

Générer des masques de bits pour plusieurs flags

Combine =BITDECALG(1;n) avec BITOU pour activer plusieurs positions en une seule formule : =BITOU(BITDECALG(1;3);BITDECALG(1;5)) active les bits 3 et 5 simultanément (résultat : 8 + 32 = 40).
C'est la base de tout système de gestion de flags en programmation bas niveau documenté dans Excel.

3Astuce

Vérifier l'équivalence avec la multiplication

Pour valider tes calculs ou enseigner le concept, compare le résultat de BITDECALG avec la multiplication équivalente : =BITDECALG(A1;B1)=A1*PUISSANCE(2;B1) retourne VRAI si les deux sont identiques.
Cette vérification est utile dans un modèle de formation ou de documentation technique.

FAQ

Questions fréquentes

Le décalage vers la gauche équivaut à une multiplication par une puissance de 2. Par exemple, décaler 5 de 2 positions (5 × 2²) donne 20. Sur un processeur, c'est une instruction élémentaire, bien plus rapide qu'une multiplication classique. En programmation bas niveau, c'est une technique d'optimisation courante.

Ressources

Pour aller plus loin

Continue sur ta lancée après la fonction BITDECALG : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.

Tout voir