![](/img/trans.png)
[英]What C/C++ library do I use to change an HTTP packet in windows?
[英]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.