下列函数只能用于unsigned,每个函数有对应的 int ,long, long long版本; long, long long版本在函数最后加上 l, ll 即如:(__builtin_popcountl(n) __builtin_popcountll(n) )
int __builtin_popcount (unsigned int x) 最常用!!!
返回二进制中1的个数
1 返回 1 , 2返回 1 , 3 返回 2
int __builtin_clz (unsigned int x)
返回二进制中前导0的个数
1返回 31 , 2返回 30, 4返回 29,特例 0返回 31
int __builtin_ctz (unsigned int x)
返回二进制中后导0的个数
1返回 0, 2 返回1, 4返回 2
int __builtin_ffs (unsigned int x)
返回二进制中最后一个1的位置
1返回 1, 2 返回 2, 4返回 3,特例 0返回 0
int __builtin_parity (unsigned int x)
返回二进制中1的个数的奇偶性
1返回 1 , 2返回 1 , 3返回 0