Algoritmos C/C++

Manipulação de bits

Bit masks representam opções booleanas em inteiro unsigned.

O que é Manipulação de bits?

Bit masks representam opções booleanas em inteiro unsigned.

Defina, limpe, alterne e teste flags.

Pontos importantes

  • Teste entradas vazias, únicas, duplicadas e ordenadas.
  • Separe correção de otimização.
  • Prefira a biblioteca padrão em produção.

Exemplos de código C e C++

C
Executar →
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);
}
Saída esperada
flags=8 bit3=1
C++
Executar →
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';
}
Saída esperada
flags=1000 bit3=1

Comparação entre C e C++

Use unsigned para shifts previsíveis. C manipula máscaras; C++ bitset oferece operações nomeadas e saída binária.

C

Loops, ponteiros, tamanhos e buffers são explícitos.

C++

Iteradores e algoritmos separam operação e armazenamento.

Exercícios práticos

Execute as duas versões e modifique-as para observar suas garantias.

  • Rastreie cada comparação.
  • Teste duplicatas e valores extremos.
  • Compare com a biblioteca padrão.