xor - 找到不同的最右边的位

标签 xor bit

我被困在这个问题上了。感谢您的帮助。

给你两个整数,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/

相关文章:

algorithm - 最大异或与最接近的数字

java - JAVA 中的符号扩展、位移位。帮助理解 C 代码位

sql - 在 pl/sql 中做 bitor 的好方法是什么?

r - 在 R 中进行多重异或比较的优雅解决方案是什么?

c# - 用 XOR 交换值

c - 将 8 位移动到 8 个单独字节的最佳方法

从 0, 1 数组计算运输

c++ - 如何在 C++ 中创建一个大小为 1 位的元素数组

java - 如何在 encog XOR 函数中提供字符串作为输入和输出?

xor - IPv6 的 STUN 服务器 xoring