簡體   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