Tantangan
Diberikan bilangan bulat dalam format komplemen 32-bit dua , kembalikan indeks digit nol paling signifikan kedua di representasi biner, di mana indeks 0mewakili bit paling signifikan, dan indeks 31mewakili bit paling signifikan.
Jika tidak ada nol kedua, Anda dapat mengembalikan 0, angka negatif, nilai palsu, atau melaporkan kesalahan dengan cara yang masuk akal dalam bahasa Anda.
Anda dapat menggunakan pengindeksan 1 jika Anda mau, tetapi kasus uji di bawah ini akan menggunakan pengindeksan 0.
Anda dapat menggunakan bilangan bulat yang tidak ditandatangani jika Anda menginginkannya; jika Anda melakukannya, maka Anda harus menangani bilangan bulat dalam jangkauan [0, 2^32). Jika Anda menggunakan bilangan bulat yang ditandatangani, Anda harus menangani bilangan bulat di dalam rentang [-2^31, 2^31). Kasing uji di sini akan menggunakan bilangan bulat yang ditandatangani, tetapi perhatikan bahwa -x(ditandatangani) adalah 2^32 - x(tidak ditandatangani).
Uji Kasus
0 (0b00) -> 1 1 (0b001) -> 2 10 (0b1010) -> 2 11 (0b01011) -> 4 12 (0b1100) -> 1 23 (0b010111) -> 5 -1 (0b11..11) -> Tidak ada -2 (0b11..10) -> Tidak Ada -4 (0b11..00) -> 1 -5 (0b11..1011) -> Tidak ada -9 (0b11..10111) -> Tidak ada 2 ^ 31-2 (0b0111..1110) -> 31
Mencetak gol
Ini kode-golf , jadi jawaban tersingkat di setiap bahasa menang!
[0, 2^32).
0b...sebagai input?
2^32-1karena saya tidak seharusnya kembali 33.