我被困在这个问题上了。感谢您的帮助。
给你两个整数,n 和 m。找到它们在二进制表示中不同的最右边位的位置(保证存在这样的位),从右到左计数。
返回 2position_of_the_found_bit 的值(从 0 开始)。
例子
对于 n = 11 和 m = 13,输出应该是 differentRightmostBit(n, m) = 2.
11(下标10) = 1011(下标2), 13(下标)10 = 1101(下标2), 它们最右边不同的bit是从右边开始位置1(从0开始)的bit二进制表示。 所以答案是 2 的 1 次方 = 2。
最佳答案
在使用按位运算符后,我明白了!答案是 (n ^ m) & -(n ^ m)
我可以在不使用按位运算符的情况下在 ruby 中轻松完成此操作,方法是将它们转换为二进制字符串并找到第一个从右侧开始的非匹配项并返回(2 ** 位置),但它必须是一个使用按位运算符的衬里是棘手的部分。
我感谢 Ryan 为我指明了正确的方向。谢谢瑞安!!
关于xor - 找到不同的最右边的位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39689022/