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 类型)。
由于这些函数是内建函数,经过了编译器的高度优化,运行速度十分快(有些甚至只需要一条指令)。