Número de zeros precedentes

Neste exercício, você colocará em prática alguns conhecimentos de aritmética de inteiros através de uma função importante para a computação: a contagem de número de zeros precedentes (number of leading zeros) ou nlz.

A função nlz possui diversas aplicações na computação e, por sua vez, diversas implementações otimizadas. Podemos citar aplicações na simulação de operações de aritmética de ponto flutuante e na implementação de algoritmos de divisão), entre outras.

Um teste de igualdade x == y pode ser implementado em baixo nível usando apenas 3 instruções, caso sua arquitetura disponibilize uma instrução nlz.

Outra forma de se olhar para a função nlz é perceber que ela consiste no elemento construtivo da função logaritmo inteiro na base 2.

Seguem alguns exemplos, em que o inteiro é codificado em 32 bits:

Para este problema, você deverá implementar um programa que leia um número inteiro aa, de 32 bits, e calcule nlz(aa).

Entrada

A entrada é composta por um número inteiro aa.

Saída

A saída deverá ser o valor de nlz(aa)

Exemplo de Entrada

0

Saída

32

Exemplo de Entrada

1

Saída

31

Exemplo de Entrada

-1

Saída

0

Exemplo de Entrada

257

Saída

23