Desafio
Dado um número inteiro no formato de complemento de dois bits de 32 bits , retorne o índice do segundo dígito zero menos significativo na representação binária, em que um índice 0
representa o bit menos significativo e um índice 31
representa o bit mais significativo.
Se não houver um segundo zero, você pode retornar 0, qualquer número negativo, qualquer valor falso ou relatar um erro de uma maneira que faça sentido no seu idioma.
Você pode usar a indexação 1, se preferir, mas os casos de teste abaixo usarão a indexação 0.
Você pode usar números inteiros não assinados, se preferir; Se o fizer, você deve manipular números inteiros no intervalo [0, 2^32)
. Se você usar números inteiros assinados, deverá manipular números inteiros no intervalo [-2^31, 2^31)
. Os casos de teste aqui usarão números inteiros assinados, mas observe que -x
(assinado) é 2^32 - x
(não assinado).
Casos de teste
0 (0b00) -> 1 1 (0b001) -> 2 10 (0b1010) -> 2 11 (0b01011) -> 4 12 (0b1100) -> 1 23 (0b010111) -> 5 -1 (0b11..11) -> nenhum -2 (0b11..10) -> nenhum -4 (0b11..00) -> 1 -5 (0b11..1011) -> nenhum -9 (0b11..10111) -> nenhum 2 ^ 31-2 (0b0111..1110) -> 31
Pontuação
Isso é código-golfe , então a resposta mais curta em cada idioma vence!
[0, 2^32)
.
0b...
como entrada?
2^32-1
porque não deveria voltar 33
.