Algoritmi C/C++

Manipolazione dei bit

Le bit mask rappresentano opzioni booleane in un integer unsigned.

Che cos’è Manipolazione dei bit?

Le bit mask rappresentano opzioni booleane in un integer unsigned.

Imposta, cancella, inverte e testa flag.

Punti importanti

  • Testa input vuoti, singoli, duplicati e ordinati.
  • Separa correttezza e ottimizzazione.
  • Preferisci la standard library in produzione.

Esempi di codice C e C++

C
Esegui →
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);
}
Output previsto
flags=8 bit3=1
C++
Esegui →
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';
}
Output previsto
flags=1000 bit3=1

Confronto tra C e C++

Usa unsigned per shift prevedibili. C manipola mask; C++ bitset offre operazioni nominate e output binario.

C

Loop, puntatori, dimensioni e buffer sono espliciti.

C++

Iteratori e algoritmi separano operazione e storage.

Esercizi pratici

Esegui entrambe le versioni e modificale per osservare le diverse garanzie.

  • Traccia ogni confronto.
  • Testa duplicati e valori estremi.
  • Confronta con la standard library.