C++ 我必须使用什么库来';ctz&x27;c++;?
是否有用于“计数尾随零”(ctz命令)的库?C++ 我必须使用什么库来';ctz&x27;c++;?,c++,C++,是否有用于“计数尾随零”(ctz命令)的库?执行该操作的步骤是什么? 我试过: #include<iostream> using namespace std; int main() { int value = 12; cout<<ctz(value); } #包括 使用名称空间std; int main() { int值=12; coutC/C++标准库不提供这种操作。但是,对于大多数此类位操作,都有编译器特定的内部函数 有了gcc/clang,它就是\
执行该操作的步骤是什么?
我试过:
#include<iostream>
using namespace std;
int main()
{
int value = 12;
cout<<ctz(value);
}
#包括
使用名称空间std;
int main()
{
int值=12;
coutC/C++标准库不提供这种操作。但是,对于大多数此类位操作,都有编译器特定的内部函数
有了gcc/clang,它就是\uuuu-builtin\uctz
。使用它不需要任何#include,因为它是一个固有的命令。这里有一个,和一个
使用VisualStudio,您需要#包括,并使用\u BitScanReverse
作为
如果您想使代码在编译器之间可移植,建议您提供自己的宏/包装器。在POSIX上,您还可以使用
(而不是
)中的ffs
(查找第一组)函数,即:
ffs()函数将在i中找到第一个位集(从最低有效位开始),并返回该位的索引。位从一(最低有效位)开始编号
请注意,此函数是XSI扩展的一部分,在包含
之前,应设置\u XOPEN\u SOURCE
功能测试宏,以便原型可见:
#define _XOPEN_SOURCE 700
#include <strings.h>
定义源代码700
#包括
gcc识别ffs,并将其编译成x86上的bsf指令
#define _XOPEN_SOURCE 700
#include <strings.h>