以下是用于找到最右设置位的代码示例:
int rightmostSetBit(int n)
{
return log2(n & -n) + 1;
}
在这个例子中, n 是一个整数,我们想要找到最右的设置位(即,二进制表示中的最右边的一个 1)。以下是函数的工作原理:
n & -n 是一个位操作,它可以仅保留 n 的最右边的设置位,其他位置均为 0。例如,如果 n 的二进制表示是 10101000,则 n & -n 将值设为 00001000。
log2 函数返回给定值的二进制对数。例如,log2(8) 返回 3,因为 8 的二进制表示为 1000;log2(16) 返回 4,因为 16 的二进制表示为 10000。
因为 n & -n 仅保留了 n 的最右边的设置位,我们将其结果加 1,以获取最右边的设置位在 n 中的位置。
因此,rightmostSetBit(n) 将返回 n 中最右边的设置位的位置。
上一篇:不理解一些读取文件的代码行