1.__builtin_popcount(n)
该函数时判断n的二进制中有多少个1
int n = 15; //二进制为1111
cout<<__builtin_popcount(n)<<endl;//输出4
2.__builtin_parity(n)
该函数是判断n的二进制中1的个数的奇偶性
int n = 15;//二进制为1111
int m = 7;//111
cout<<__builtin_parity(n)<<endl;//偶数个,输出0
cout<<__builtin_parity(m)<<endl;//奇数个,输出1
3.__builtin_ffs(n)
该函数判断n的二进制末尾最后一个1的位置,从一开始
int n = 1;//1
int m = 8;//1000
cout<<__builtin_ffs(n)<<endl;//输出1
cout<<__builtin_ffs(m)<<endl;//输出4
4.__builtin_ctz(n)
该函数判断n的二进制末尾后面0的个数,当n为0时,和n的类型有关
int n = 1;//1
int m = 8;//1000
cout<<__builtin_ctzll(n)<<endl;//输出0
cout<<__builtin_ctz(m)<<endl;//输出3
--转自https://blog.csdn.net/nobleman__/article/details/78608081?utm_source=copy