找到最右边的位

bre*_*976 2 bits xor bit

我坚持这个问题.谢谢你的协助.

你有两个整数,n和m.找到它们在二进制表示中不同的最右边位的位置(保证这样的位存在),从右到左计数.

返回2position_of_the_found_bit(从0开始)的值.

例

对于n = 11和m = 13,输出应该是不同的最右边比特(n,m)= 2.

11(下标10)= 1011(下标2),13(下标)10 = 1101(下标2),它们不同的最右位是二进制表示中右起第1位(0基)的位.所以答案是2到1次幂= 2.

bre*_*976 10

在使用按位运算符后,我得到了它!答案是(n ^ m)& - (n ^ m)

我可以很容易地在ruby中完成这个,而不使用按位运算符,将它们转换为二进制字符串并找到从右侧开始并返回的第一个非匹配(2**位置)但是它需要是一个单行使用按位运算符是棘手的部分.

我赞扬Ryan指出了我正确的方向.谢谢瑞恩!