0Pricing
C Academy · Leçon

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 & 1 teste 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

  1. Opérateurs bit à bit
  2. Décalages
  3. Masques de bits et indicateurs
  4. Astuces pratiques sur les bits
← Retour à C Academy