Astuces pratiques sur les bits
Techniques courantes
Astuces pratiques sur les bits est une leçon C Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C Academy comprend 4 leçons au total.
Astuces utiles sur les bits
Une fois que vous comprenez les opérateurs bit à bit, tout un ensemble d’astuces compactes devient disponible. Elles sont rapides et apparaissent souvent dans du code réel.
Parcourons les plus courantes.
#include <stdio.h>
int main(void) {
unsigned x = 6;
printf("x & 1 = %u (odd if 1)\n", x & 1);
return 0;
}Pair ou impair
Le bit de poids le plus faible indique la parité. x & 1 vaut 1 pour les nombres impairs et 0 pour les nombres pairs.
#include <stdio.h>
int main(void) {
for (unsigned x = 0; x < 5; x++) {
printf("%u is %s\n", x, (x & 1) ? "odd" : "even");
}
return 0;
}Vérifier une puissance de deux
Un nombre positif est une puissance de deux s’il contient exactement un bit à 1. L’expression x & (x - 1) vaut 0 uniquement dans ce cas.
#include <stdio.h>
int is_pow2(unsigned x) {
return x != 0 && (x & (x - 1)) == 0;
}
int main(void) {
printf("%d %d %d\n", is_pow2(16), is_pow2(18), is_pow2(1));
return 0;
}Désactiver le bit à 1 de poids le plus faible
x & (x - 1) désactive le bit à 1 de poids le plus faible. C’est la base du comptage rapide des bits à 1.
#include <stdio.h>
int main(void) {
unsigned x = 0b10110;
printf("before: %u\n", x);
printf("after: %u\n", x & (x - 1));
return 0;
}Isoler le bit à 1 de poids le plus faible
x & (-x) isole le bit à 1 de poids le plus faible, en ne laissant activé que ce bit.
Cette technique repose sur la représentation en complément à deux.
#include <stdio.h>
int main(void) {
unsigned x = 0b10110;
printf("lowest set bit = %u\n", x & (-x));
return 0;
}Compter les bits activés
Désactiver répétitivement le bit à 1 de poids le plus faible permet de compter le nombre de bits à 1, en autant d’étapes qu’il y a de bits à 1.
#include <stdio.h>
int popcount(unsigned x) {
int n = 0;
while (x) { x &= (x - 1); n++; }
return n;
}
int main(void) {
printf("%d\n", popcount(255));
printf("%d\n", popcount(0b1010));
return 0;
}Échanger sans variable temporaire
L’échange par XOR permute deux entiers sans utiliser de stockage supplémentaire.
#include <stdio.h>
int main(void) {
int a = 3, b = 8;
a ^= b; b ^= a; a ^= b;
printf("a=%d b=%d\n", a, b);
return 0;
}Arrondir à la puissance de deux supérieure
Vous pouvez arrondir une valeur non signée à la puissance de deux suivante en propageant le bit de poids fort vers les bits de poids faible, puis en ajoutant 1.
#include <stdio.h>
unsigned next_pow2(unsigned v) {
v--;
v |= v >> 1; v |= v >> 2; v |= v >> 4;
v |= v >> 8; v |= v >> 16;
return v + 1;
}
int main(void) {
printf("%u\n", next_pow2(17));
printf("%u\n", next_pow2(100));
return 0;
}Vérifier si les bits diffèrent
Deux valeurs ont des bits différents exactement aux positions où a ^ b contient des bits à 1. Les compter donne la distance de Hamming.
#include <stdio.h>
int main(void) {
unsigned a = 0b1101, b = 0b1011;
unsigned diff = a ^ b;
int count = 0;
while (diff) { diff &= diff - 1; count++; }
printf("hamming distance = %d\n", count);
return 0;
}Valeur absolue sans branchement
En utilisant le bit de signe, vous pouvez calculer une valeur absolue sans if. Le masque contient uniquement des 1 pour les nombres négatifs et uniquement des 0 pour les nombres non négatifs.
#include <stdio.h>
int main(void) {
int x = -42;
int mask = x >> 31;
int abs = (x + mask) ^ mask;
printf("abs = %d\n", abs);
return 0;
}Activer un bit par son indice
Combinez le décalage et OR pour activer une position de bit arbitraire calculée à l’exécution.
#include <stdio.h>
int main(void) {
unsigned v = 0;
int positions[] = {1, 3, 5};
for (int i = 0; i < 3; i++) {
v |= (1u << positions[i]);
}
printf("v = %u\n", v);
return 0;
}Vérification rapide
Testez vos connaissances sur les astuces liées aux bits.
Récapitulatif
Vous avez découvert des astuces pratiques sur les bits :
x & 1teste si un nombre est pair ou impair.x & (x - 1)désactive le bit à 1 de poids le plus faible et détecte les puissances de deux.x & (-x)isole le bit à 1 de poids le plus faible.- Le comptage des bits à 1, l’échange par XOR, la distance de Hamming et la valeur absolue sans branchement.
Questions Fréquemment Posées
La leçon « Astuces pratiques sur les bits » est-elle gratuite ?
Oui — le texte complet de « Astuces pratiques sur les bits » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C Academy, passe à CoddyKit PRO. Le cours C Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Astuces pratiques sur les bits » ?
Techniques courantes Tu pratiques C Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C Academy ?
Aucune expérience préalable n'est requise. C Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Astuces pratiques sur les bits » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C Academy ?
Oui. Chaque leçon C Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Opérateurs bit à bit
- Décalages
- Masques de bits et indicateurs
- Astuces pratiques sur les bits