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 0représente le bit le moins significatif et un index de 31repré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-1parce que je n'étais pas censé revenir 33.