繁体   English   中英

c++ 中的“ctz”命令必须使用什么库?

[英]what library do I have to use for 'ctz' command in c++?

是否有用于“计数尾随零”(ctz 命令)的库?
这样做的程序是什么?

我试过了:

#include<iostream>
using namespace std;
int main()
{
    int value = 12;
    cout<<ctz(value);
}

C/C++ 标准库不提供该操作。 但是,对于大多数此类按位运算,都有特定于编译器的内在函数。

使用 gcc/clang,它是__builtin_ctz 您不需要任何#include 来使用它,正是因为它是一个内在命令。 这里有一个GCC 内在函数列表,这里有一个Clang 内在函数列表

使用 Visual Studio,您需要#include <intrin.h>并使用_BitScanReverse如本答案所示

如果您想让您的代码在编译器之间移植,我们鼓励您提供自己的宏/包装器。

在 POSIX 上,您还可以使用<strings.h> (而不是<string.h> !)中的ffs (查找第一组)函数,该函数记录为

 int ffs(int i);

ffs()函数应在i中找到第一个位集(从最低有效位开始),并返回该位的索引。 位从一位(最低有效位)开始编号。

请注意,此函数是 XSI 扩展的一部分,因此您应该在包含<strings.h>或任何系统头文件之前设置_XOPEN_SOURCE功能测试宏,以便原型可见:

#define _XOPEN_SOURCE 700
#include <strings.h>

gcc 识别ffs并将其编译为 x86 上的bsf指令。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM