Algorithmes C/C++

Manipulation de bits

Les masques de bits regroupent plusieurs options booléennes dans un entier non signé.

Qu’est-ce que Manipulation de bits ?

Les masques de bits regroupent plusieurs options booléennes dans un entier non signé.

Activez, effacez, inversez et testez des flags.

Points importants

  • Testez les entrées vides, uniques, dupliquées et déjà triées.
  • Séparez correction et optimisation.
  • Préférez la bibliothèque standard en production.

Exemples de code C et C++

C
Exécuter →
main.c
#include <stdio.h>

int main(void) {
    unsigned flags = 0;
    flags |= 1u << 1;
    flags |= 1u << 3;
    flags ^= 1u << 1;
    printf("flags=%u bit3=%u\n", flags, (flags >> 3) & 1u);
}
Résultat attendu
flags=8 bit3=1
C++
Exécuter →
main.cpp
#include <bitset>
#include <iostream>

int main() {
    std::bitset<4> flags;
    flags.set(1);
    flags.set(3);
    flags.flip(1);
    std::cout << "flags=" << flags
              << " bit3=" << flags.test(3) << '\n';
}
Résultat attendu
flags=1000 bit3=1

Comparaison entre C et C++

Les types unsigned rendent les décalages prévisibles. C utilise des masques ; bitset C++ fournit des opérations nommées et un affichage binaire.

C

Boucles, pointeurs, tailles et buffers sont explicites.

C++

Itérateurs et algorithmes séparent opération et stockage.

Exercices pratiques

Exécutez les deux versions puis modifiez-les pour observer leurs garanties.

  • Tracez chaque comparaison.
  • Testez doublons et valeurs extrêmes.
  • Comparez aux algorithmes standards.