挑战
给定一个32位二进制补码格式的整数,请返回二进制表示形式中第二个最低有效零数字的索引,其中索引0
表示最低有效位,而索引31
表示最高有效位。
如果没有第二个零,则可以返回0,任何负数,任何虚假值或以您的语言有意义的方式报告错误。
如果愿意,可以使用1索引,但是下面的测试用例将使用0索引。
如果愿意,可以使用无符号整数。如果这样做,则必须处理范围内的整数[0, 2^32)
。如果使用带符号整数,则必须处理范围内的整数[-2^31, 2^31)
。这里的测试用例将使用带符号的整数,但请注意,-x
(带符号)为2^32 - x
(无符号)。
测试用例
0(0b00)-> 1 1(0b001)-> 2 10(0b1010)-> 2 11(0b01011)-> 4 12(0b1100)-> 1 23(0b010111)-> 5 -1(0b11..11)->无 -2(0b11..10)->无 -4(0b11..00)-> 1 -5(0b11..1011)->无 -9(0b11..10111)->无 2 ^ 31-2(0b0111..1110)-> 31
计分
这是代码高尔夫球,因此每种语言中最短的答案将获胜!
[0, 2^32)
。
0b...
作为输入?
2^32-1
因为我不该返回33
。