Qu'est-ce que la fonction BITDECALD ?
Tu sors BITDECALD (BITRSHIFT en anglais) quand une simple division ne suffit plus, parce que tu dois lire ou reconstruire un nombre bit par bit : décoder un format compact, séparer plusieurs informations tassées dans un même entier, ou reproduire fidèlement ce que ferait ton code bas niveau. C'est le réflexe dès que le problème se pose en binaire plutôt qu'en base 10.
Concrètement, c'est elle qui divise rapidement un index de tableau par 2 à chaque itération d'une recherche dichotomique, qui extrait un octet dans une adresse IP encodée, ou qui isole un champ de bits dans un registre de capteur. Simple, rapide et redoutablement efficace pour les développeurs et ingénieurs qui travaillent au niveau bas.

Comprendre chaque paramètre de la fonction BITDECALD
BITDECALD prend toujours deux arguments dans cet ordre : d'abord nombre, l'entier dont tu pars, puis décalage, le nombre de crans vers la droite. Les deux sont obligatoires, et aucun n'est facultatif ici. Retiens juste que nombre accepte des valeurs de 0 à 2^48 - 1, tandis que décalage plafonne à 53 : ce sont deux limites différentes qu'on confond facilement.
nombre
: le nombre entier dont tu veux décaler les bits vers la droiteIl doit être un entier positif ou nul, compris entre 0 et 281 474 976 710 655 (2^48 - 1). Excel travaille avec la représentation binaire de ce nombre.
Par exemple, 12 en binaire est 1100. =BITDECALD(12; 1) déplace tous les bits d'une position vers la droite et produit 110, soit 6.
décalage
: le nombre de positions vers la droite dont tu veux décaler les bitsIl doit être un entier positif ou nul. Chaque décalage d'une position divise le nombre par 2 avec troncature. Un décalage de 3 équivaut à une division entière par 8.
Le décalage maximum accepté est de 53 bits, limite liée à la précision des nombres flottants 64 bits d'Excel.

Exemples pratiques pas à pas
Comment diviser un nombre par une puissance de 2 avec la fonction BITDECALD
Tu transposes dans Excel un algorithme de recherche dichotomique avant de le coder, et chaque étape de cet algorithme divise un index par 2. Tes registres de test sont listés avec leur valeur de départ et le nombre de crans à appliquer, et tu veux la valeur décalée sur toute la colonne sans la calculer à la main. La fonction BITDECALD pousse les bits vers la droite et te rend exactement ce que ton code bas niveau produira.
- 1Dans une cellule, écris
=BITDECALD(. - 2En 1er argument : clique sur la valeur de départ dont tu veux décaler les bits,
A2. Elle contient128, et c'est sa représentation binaire que la fonction déplace, pas le nombre décimal affiché. - 3En 2ᵉ argument : clique sur le nombre de crans à parcourir vers la droite,
B2. Un seul cran, comme sur cette ligne, revient à diviser par 2, tandis que les3crans de la ligne512reviennent à diviser par 8. - 4Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. Les deux références restent relatives, donc chaque ligne repart de sa propre valeur et de son propre nombre de crans.
=BITDECALD(A2; B2)128 (10000000) d'un cran vers la droite : il reste 1000000, soit 64. Chaque cran retiré revient à une division entière par 2, ce qui explique que la ligne 512 avec un décalage de 3 retombe elle aussi sur 64 (512 divisé par 8).Comment extraire un champ de bits en combinant la fonction BITDECALD et la fonction BITET
Tu dépouilles les relevés d'un banc de capteurs qui empile plusieurs informations dans un même registre 16 bits, et le mode de fonctionnement occupe les bits 4 à 7. Tu as la valeur décimale brute de chaque registre et tu veux lire ce mode directement dans une colonne, sans convertir en binaire à la main. La fonction BITDECALD ramène le champ en bas du nombre, et un masque ne conserve que lui.
- 1Dans une cellule, écris
=BITET(. - 2En 1er argument : écris le décalage qui ramène le champ en bas du registre et referme-le,
BITDECALD(A2; 4). Le4est la position du premier bit qui t'intéresse, donc le registre complet deA2glisse de quatre crans et son bit 4 arrive en position 0. - 3En 2ᵉ argument : saisis le masque qui borne la largeur du champ,
15. Il vaut1111en binaire, soit quatre bits allumés, et la fonction BITET efface tout ce qui dépasse cette largeur. - 4Ferme la parenthèse et appuie sur Entrée. Il n'y en a qu'une à fermer, celle de la fonction BITET, puisque la fonction BITDECALD a été refermée dans son propre argument.
=BITET(BITDECALD(A2; 4); 15)15 (1111 en binaire) coupe ce qui dépasse et ne laisse que les 4 bits voulus. Sur le registre 4660, le champ vaut 3 ; sur 240, dont les bits 4 à 7 sont tous allumés, il vaut 15, la valeur maximale d'un champ de 4 bits.Comment éviter l'erreur #NOMBRE! avec la fonction BITDECALD
Les relevés arrivent d'un export automatique et tu ne contrôles pas ce qu'il y a dedans : une valeur négative ou une virgule s'y glisse de temps en temps. Tu veux que ta colonne reste lisible au lieu de se couvrir de codes d'erreur dès qu'une ligne sort des clous. En enveloppant l'appel dans SIERREUR, tu remplaces chaque #NOMBRE! par un mot clair et tu repères les lignes à reprendre.
- 1Dans une cellule, écris
=SIERREUR(. - 2En 1er argument : écris le calcul à surveiller et referme-le,
BITDECALD(A2; B2). C'est lui qui porte le risque, puisque la fonction BITDECALD renvoie#NOMBRE!sur une valeur importée négative comme le-5du tableau. - 3En 2ᵉ argument : saisis le texte à afficher quand ce calcul échoue,
"Erreur". Les guillemets sont indispensables pour qu'Excel traite ces lettres comme du texte et non comme le nom d'une plage. - 4Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. Le mot de repli ne remplace que les lignes en échec et laisse les résultats valides s'afficher normalement.
=SIERREUR(BITDECALD(A2; B2); "Erreur")#NOMBRE! pour trois raisons différentes : -5 est négatif, 12,7 est décimal (la fonction BITDECALD refuse la virgule au lieu de tronquer), et 54 dépasse le décalage maximal de 53. La ligne 255 avec un décalage de 8, elle, renvoie bien 0 : tous les bits sont sortis par la droite, ce qui est un résultat valide et non une erreur.
Les erreurs fréquentes avec la fonction BITDECALD
Avec BITDECALD, c'est presque toujours le même message qui s'affiche quand quelque chose cloche : #NOMBRE!. Il surgit dès que tu sors du terrain prévu, c'est-à-dire les entiers non signés. Un nombre négatif n'a pas sa place dans le binaire non signé, un décalage au-delà de 53 dépasse la précision des doubles 64 bits, et un nombre plus grand que 281 474 976 710 655 (2^48 - 1) franchit le plafond de la fonction.
Utiliser un nombre négatif
=BITDECALD(-5; 1) retourne #NOMBRE! car la fonction est conçue pour les entiers non signés. Les nombres négatifs ne sont pas représentables dans le modèle binaire non signé d'Excel.
Solution : Vérifie que ton paramètre nombre est bien positif ou nul. Si tu dois gérer des entiers signés, traite le bit de signe séparément avant d'appeler BITDECALD.
Décalage supérieur à 53 provoque #NOMBRE!
Excel limite le décalage à 53 bits (précision des doubles 64 bits). Au-delà, la représentation interne n'est plus fiable et Excel refuse le calcul avec #NOMBRE!.
Solution : Assure-toi que le paramètre décalage est compris entre 0 et 53. Pour les cas limites, note que =BITDECALD(100; 53) retourne 0 car tous les bits ont été éliminés.
Dépasser la limite 2^48 - 1 pour le nombre
Excel limite la valeur de nombre à 281 474 976 710 655 (2^48 - 1). Au-delà, la représentation binaire n'est plus garantie correcte et Excel retourne #NOMBRE!.
Solution : Pour la plupart des usages (registres 32 bits, adresses IPv4), cette limite n'est jamais atteinte. Si tes données dépassent ce seuil, vérifie la source : un nombre aussi grand suggère souvent une erreur de format.

Astuces avancées avec BITDECALD
Extraire un champ de N bits avec BITET
Décaler seul te place le bon offset en position 0, mais les bits au-dessus restent présents. Combine BITDECALD avec BITET et un masque pour extraire proprement : =BITET(BITDECALD(A1;4);15) extrait les bits 4 à 7 (masque 15 = 1111 en binaire).
Cette technique couvre la quasi-totalité des besoins en décodage de registres ou de formats compacts.
Vérifier l'équivalence avec la division entière
Si tu veux valider tes formules, contrôle que BITDECALD(x; n) donne le même résultat que ENT(x / 2^n) : =SI(BITDECALD(A1;3)=ENT(A1/8);"OK";"Erreur"). Les deux approches sont identiques pour les entiers positifs.
Cette vérification est utile quand tu traduis un algorithme existant en formules Excel.
Décomposer un mot 16 bits en deux octets
Pour extraire l'octet de poids fort et l'octet de poids faible d'un mot 16 bits, utilise =BITDECALD(A1;8) pour le poids fort et =MOD(A1;256) pour le poids faible. Les deux sont complémentaires et couvrent tous les cas sans chevauchement.
C'est la base des conversions réseau little-endian / big-endian dans un classeur Excel.
Questions fréquentes
=BITDECALD(nombre; 1) est équivalent à =ENT(nombre/2) pour les entiers positifs : les deux tronquent vers le bas. Décaler de 2 positions divise par 4, de 3 par 8, etc.
La différence est sémantique : BITDECALD exprime explicitement une opération binaire, utile quand ton contexte est du traitement bas niveau, des registres ou des protocoles réseau.
Oui, Excel autorise jusqu'à 53 bits de décalage (limite de précision des doubles 64 bits). Au-delà, la fonction retourne #NOMBRE!. Pour les usages courants en 32 bits ou moins, cette limite n'est jamais atteinte.
Non. La fonction n'accepte que des entiers positifs ou nuls, de 0 à 2^48 - 1. Un nombre négatif provoque immédiatement #NOMBRE! car les fonctions binaires d'Excel sont conçues pour des données non signées.
Si tu décales suffisamment vers la droite, tous les bits finissent par sortir et tu obtiens 0. Par exemple, =BITDECALD(255; 8) retourne 0 car 255 en binaire est 11111111 (8 bits) et décaler de 8 positions élimine tous les bits.
C'est un comportement attendu : les bits qui sortent par la droite sont perdus, exactement comme en programmation.
BITDECALD se combine parfaitement avec BITET (masque ET), BITOU (OR), BITXOU (XOR) et BITDECALG (décalage gauche).
Par exemple, pour extraire les bits 4 à 7 : =BITET(BITDECALD(A1;4);15). Pour décoder une adresse IPv4, enchaîne BITDECALD avec différents offsets et un masque 255 pour chaque octet.
Pour aller plus loin
Continue sur ta lancée après la fonction BITDECALD : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir



