Programação Imperativa

100 Questões Fichas Testes/Exames

Questão 5: trailingZ

Voltar

Defina uma função int trailingZ (unsigned int n) que calcula o número de bits a 0 no final da representação binária de um número (i.e., o expoente da maior potência de 2 que é divisor desse número).

Exemplo

> trailingZ(12)
(int) 2 // 12 = 0b1100

Resolução

int trailingZ (unsigned int n) {
    if(n == 0) return 32;
    if(n % 2 == 1) return 0;
    else return 1 + trailingZ(n >> 1);
}