GCC 中的其他内置函数
位运算
int __builtin_ffs(int x)
:返回 的二进制末尾最后一个 的位置,位置的编号从 开始(最低位编号为 )。当 为 时返回 。
int __builtin_clz(unsigned int x)
:返回 的二进制的前导 的个数。当 为 时,结果未定义。
int __builtin_ctz(unsigned int x)
:返回 的二进制末尾连续 的个数。当 为 时,结果未定义。
int __builtin_clrsb(int x)
:当 的符号位为 时返回 的二进制的前导 的个数减一,否则返回 的二进制的前导 的个数减一。
int __builtin_popcount(unsigned int x)
:返回 的二进制中 的个数。
int __builtin_parity(unsigned int x)
:判断 的二进制中 的个数的奇偶性。
这些函数都可以在函数名末尾添加 l
或 ll
(如 __builtin_popcountll()
)来使参数类型变为 (unsigned) long
或 (unsigned) long long
(返回值仍然是 int
类型)。
由于这些函数是内建函数,经过了编译器的高度优化,运行速度十分快(有些甚至只需要一条指令)。