Contagem de bits usando GCC

Página Inicial / ∣V∣+∣E∣ (Gráfico) / Contagem de bits usando GCC
Função Pra que serve Exemplo de aplicação
__builtin_popcount, __builtin_popcountl, __builtin_popcountll Conta o número de 1s Verificar se o número é potência de 2
__builtin_parity, __builtin_parityl, __builtin_parityll Paridade do número de bits 1
__builtin_clz, __builtin_clzl, __builtin_clzll Count leading zeros, conta número de zeros antes do primeiro 1 Implementação do primeiro bit mais significativo
__builtin_ctz, __builtin_ctzl, __builtin_ctzll Count trailing zeros, conta número de zeros depois do último 1, argumento 0 é undefined behavior
__builtin_ffs, __builtin_ffsl, __builtin_ffsll, ffs, ffsl, ffsll Posição do primeiro bit menos significativo indexada em 1
std::__lg Logaritmo usando primeiro bit mais significativo, argumento 0 é undefined behavior Logaritmo, implementação da posição do primeiro bit mais significativo
Posição do primeiro bit mais significativo indexada em 1 (msb(0) = 0, msb(1) = 1, ...):
int msb(ll i) {
    return i != 0 ? __lg(i)+1 : 0;
}