当索引为 1 时,_BitScanReverse返回 0,这意味着根据 MS "no set bits were found"



直接从MSDN复制...

unsigned char _BitScanReverse(  
unsigned long * Index,  
unsigned long Mask  
);  

描述

从最高有效位 (MSB( 到最低有效位 (LSB( 的掩码数据中搜索设定位 (1(。

返回值

如果设置了索引,则为非零,如果未找到设置位,则为 0

根据返回值描述,如果未找到设置位,则 Index=0。但是在掩码 = 1 的情况下会发生什么?运行MSDN文档中指令附带的示例代码,它也返回0,这使程序员感到困惑,因为他不知道是否"未找到设置位"或"索引等于1"。

我在这里理解了什么吗?

您误读了文档。返回值为 1 或 0,具体取决于mask中是否有非零位。 设置位的索引以*Index为单位返回。 不会产生混淆。

相关内容

最新更新