0

位操作集包含BLSI - 该指令Extracts the lowest set bit from the source operand and set the corresponding bit in the destination register

您能否举一个例子来说明the lowest set bit(操作数的二进制表示中的最后一位?)所指的内容,执行的操作是什么,以及该操作在哪个上下文或哪种应用程序中使用?

4

1 回答 1

3

最低设置位是最低有效 1 位。例如在 1010110101 1 0000 那么右边的第一个 1 位0000是最低设置位,并_blsi_u32(0b101011010110000)返回0b10000

该操作也已在上面的链接中描述:

temp ← (-SRC) bitwiseAND (SRC);
SF ← temp[OperandSize -1];
ZF ← (temp = 0);
IF SRC = 0
    CF ← 0;
ELSE
    CF ← 1;
FI
DEST ← temp;

(-SRC) bitwiseAND (SRC)清除除最低有效 1 位之外的所有位。有关其工作原理的更多信息,请阅读

它通常用于迭代设置位,例如计算设置位的数量(虽然不是最有效的方法),或者打包/存放位:

它也用于Fenwick 树。请参阅示例 C++ 实现

于 2021-08-16T07:15:46.327 回答