Défi
Étant donné un entier au format complément à deux de 32 bits , retournez l'index du deuxième chiffre zéro le moins significatif dans la représentation binaire, où un index de 0
représente le bit le moins significatif et un index de 31
représente le bit le plus significatif.
S'il n'y a pas de second zéro, vous pouvez renvoyer 0, tout nombre négatif, toute valeur falsifiée ou signaler une erreur d'une manière qui a du sens dans votre langue.
Vous pouvez utiliser l'indexation 1 si vous préférez, mais les cas de test ci-dessous utiliseront l'indexation 0.
Vous pouvez utiliser des entiers non signés si vous préférez; si vous le faites, vous devez alors gérer des entiers dans la plage [0, 2^32)
. Si vous utilisez des entiers signés, vous devez gérer les entiers de la plage [-2^31, 2^31)
. Les cas de test ici utiliseront des entiers signés, mais notez que -x
(signé) est2^32 - x
(non signé).
Cas de test
0 (0b00) -> 1 1 (0b001) -> 2 10 (0b1010) -> 2 11 (0b01011) -> 4 12 (0b1100) -> 1 23 (0b010111) -> 5 -1 (0b11..11) -> Aucun -2 (0b11..10) -> Aucun -4 (0b11..00) -> 1 -5 (0b11..1011) -> Aucun -9 (0b11..10111) -> Aucun 2 ^ 31-2 (0b0111..1110) -> 31
Notation
C'est le code-golf , donc la réponse la plus courte dans chaque langue gagne!
[0, 2^32)
.
0b...
en entrée?
2^32-1
parce que je n'étais pas censé revenir 33
.