![](/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.