C 中是否有任何内置函数可以返回 32 位整数中第一位等于 0 的值?
我知道我可以使用 for 循环检查所有 32 位:
value <--- parameter (uint32_t)
for (int i=0; i<32; i++){
uint32_t pos = 1 << i;
if (pos ^ value) return i; // xor
}
return -1;
最佳答案
遗憾的是,没有标准化的 C 函数可以执行此操作,但许多 C 编译器都提供了自己的函数。当您使用 GCC 时,它是 _builtin_ctz
函数。当您使用 Microsoft Visual C 时,它是_BitScanForward
函数。
如果您想编写在多个不同编译器上编译的程序,那么您最终会使用大量 #ifdef
语句以不同的方式提供相同的内容。 (我一直希望 C 委员会已经授权其中一项!)
关于c - C 中的位操作 - 内置函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593605/