当index为1时_BitScanReverse返回0,这意味着根据MS“未找到设置位”

时间:2018-06-03 18:21:19

标签: c++ msdn intrinsics

直接从MSDN复制......

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

描述

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

返回值

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

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

我在这里理解错了吗?

1 个答案:

答案 0 :(得分:1)

您误读了文档。 返回值为1或0,具体取决于mask中是否存在非零位。设置位的索引在*Index中返回。没有混乱。