La fonction BITDECALD te permet de décaler un nombre vers la droite d'un certain nombre de bits. C'est l'équivalent d'une division par une puissance de 2, mais au niveau binaire. Tu travailles sur des protocoles réseau, des manipulations de registres matériels, ou tu extrais des informations encodées dans des nombres ? BITDECALD (BITRSHIFT en anglais) te donne un contrôle précis sur chaque bit.
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.
Syntaxe de la fonction BITDECALD
=BITDECALD(nombre; décalage)Si nombre est décimal (ex. 12,7), Excel le tronque automatiquement à 12. Les valeurs négatives ou supérieures à 281 474 976 710 655 (2^48 - 1) provoquent l'erreur #NOMBRE!.
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.
Astuce : Si tu donnes un nombre décimal comme 12,7, Excel le tronquera automatiquement à 12. Si tu donnes un nombre négatif ou supérieur à la limite, Excel retournera l'erreur #NOMBRE!.
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.
Astuce : Décaler de 1 position divise par 2, de 2 positions par 4, de 3 positions par 8, etc. C'est une manière ultra-rapide de calculer des divisions par des puissances de 2 en modélisation ou en analyse de données binaires.
Pas envie d'écrire la formule BITDECALD à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
Développeur : division rapide par puissance de 2
Tu modélises dans Excel un algorithme de recherche dichotomique qui divise un index par 2 à chaque étape. Plutôt que d'écrire =ENT(A2/2) pour chaque ligne, tu utilises =BITDECALD(A2; B2) : c'est plus explicite sur l'intention binaire et c'est ce que ton code bas niveau va réellement exécuter.
La colonne Décalage varie selon l'étape : 1 pour diviser par 2 au premier niveau, 2 par 4 au deuxième, etc. Avec 255 et un décalage de 4, tu obtiens 15 : les 4 bits de poids faible sont éliminés, comme en programmation assembleur.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Nombre | Décalage | Résultat | Équivalent |
| 2 | 128 | 1 | 64 | 128 / 2 |
| 3 | 128 | 2 | 32 | 128 / 4 |
| 4 | 128 | 3 | 16 | 128 / 8 |
| 5 | 128 | 4 | 8 | 128 / 16 |
| 6 | 255 | 4 | 15 | 255 / 16 (tronqué) |
=BITDECALD(128; 1)Ingénieur électronique : extraction d'un champ de registre
Tu documentes dans Excel un registre 16 bits d'un capteur où les bits 12 à 15 encodent le mode de fonctionnement. Pour isoler ces 4 bits de poids fort, tu décales la valeur entière de 12 positions vers la droite : tout ce qui était au-dessus du bit 12 se retrouve maintenant dans les 4 bits de poids faible, et tu lis directement la valeur.
Cette technique est essentielle avec les microcontrôleurs et les FPGA. Le registre 53248 en binaire est 1101000000000000 : après un décalage de 12, il ne reste que 1101, soit 13. Pour extraire des champs plus étroits, combine BITDECALD avec BITET en appliquant un masque.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Registre (déc.) | Représentation binaire | Champ bits 12-15 | Valeur extraite |
| 2 | 53248 | 1101000000000000 | =BITDECALD(A2;12) | 13 |
| 3 | 36864 | 1001000000000000 | =BITDECALD(A3;12) | 9 |
| 4 | 20480 | 0101000000000000 | =BITDECALD(A4;12) | 5 |
| 5 | 4096 | 0001000000000000 | =BITDECALD(A5;12) | 1 |
=BITDECALD(53248; 12)Astuce de pro : Pour extraire exactement N bits après le décalage, enchaîne avec BITET(BITDECALD(A1;offset); masque). Par exemple, pour extraire 4 bits : =BITET(BITDECALD(A1;4);15) (15 = 1111 en binaire).
Data scientist : feature engineering sur des flags binaires
Ton jeu de données IoT ou SaaS stocke les permissions utilisateur dans un seul entier pour des raisons de compacité. Avant d'alimenter ton pipeline de machine learning, tu dois créer des colonnes dérivées (features) lisibles pour chaque champ.
La colonne Admin décale de 7 bits : si le bit 7 vaut 1, l'utilisateur est admin ; sinon il vaut 0. La colonne Rôle décale de 4 bits pour récupérer la valeur encodée sur les bits 4 à 7. BITDECALD évite de passer par des conversions binaires manuelles et se vectorise facilement sur toute la colonne.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | User ID | Permissions (déc.) | Admin ? (bit 7) | Rôle (bits 4-6) |
| 2 | 101 | 192 | =BITDECALD(B2;7) | =BITDECALD(B2;4) |
| 3 | 102 | 96 | =BITDECALD(B3;7) | =BITDECALD(B3;4) |
| 4 | 103 | 160 | =BITDECALD(B4;7) | =BITDECALD(B4;4) |
| 5 | 104 | 224 | =BITDECALD(B5;7) | =BITDECALD(B5;4) |
=BITDECALD(192; 7)Analyste réseau : décodage d'adresses IPv4
Tu analyses des logs réseau où les adresses IPv4 sont stockées en format entier 32 bits. Tu veux les éclater en 4 octets pour filtrer par plage, identifier des sous-réseaux, ou détecter des anomalies.
L'adresse 192.168.1.1 correspond à 3 232 235 777 en décimal. Un décalage de 24 bits isole le premier octet (192). Les octets suivants combinent BITDECALD et BITET avec le masque 255 (11111111 en binaire) pour ne garder que les 8 bits voulus. L'adresse 10.0.0.1 donne 167 772 161, et 127.0.0.1 donne 2 130 706 433.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | IP (déc.) | Octet 1 | Octet 2 | Octet 3 | Octet 4 |
| 2 | 3232235777 | =BITDECALD(A2;24) | =BITET(BITDECALD(A2;16);255) | =BITET(BITDECALD(A2;8);255) | =BITET(A2;255) |
| 3 | 167772161 | =BITDECALD(A3;24) | =BITET(BITDECALD(A3;16);255) | =BITET(BITDECALD(A3;8);255) | =BITET(A3;255) |
| 4 | 2130706433 | =BITDECALD(A4;24) | =BITET(BITDECALD(A4;16);255) | =BITET(BITDECALD(A4;8);255) | =BITET(A4;255) |
=BITDECALD(3232235777; 24)Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes 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 sur la fonction BITDECALD
Quelle est la différence entre BITDECALD et la division par 2 ?
=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.
Peut-on décaler de plus de 32 bits ?
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.
BITDECALD fonctionne-t-elle avec des nombres négatifs ?
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.
Que se passe-t-il si je décale trop loin ?
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.
Comment combiner BITDECALD avec d'autres fonctions binaires ?
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
Bloqué sur une formule Excel ?
Pose ta question à notre assistant Excel IA, il te sort la bonne formule en quelques secondes.
Essayer l'assistant IAGratuit · 10 questions par mois

