总结一下位运算的好用函数
这些函数都有相应的usigned long和usigned long long版本,只需要在函数名后面加上l或ll就可以了,比如int __builtin_clzll。
1.int __builtin_clz (unsigned int x)
例如对于
	
	以下输出均为2
	
	int x=3;
    cout<<32-__builtin_clz(x)<<endl;
   	
    
    long long x=3;
    cout<<64-__builtin_clzll(x)<<endl;
输出为 2
 常用于求最高位位数
2.int __builtin_ffs (unsigned int x)
	
	输出为 3
	
    int x=4;
    cout<<__builtin_ffs(x)<<endl;
3.int __builtin_ctz (unsigned int x)
	
	输出为 3
    int x=8;
    cout<<__builtin_ctz(x)<<endl;
4.int __builtin_popcount (unsigned int x)
	
	输出为 3
	int x=7;
    cout<<__builtin_popcount(x)<<endl;
5.int __builtin_parity (unsigned int x)
int n = 15;//二进制为1111
int m = 7;//111
cout<<__builtin_parity(n)<<endl;//偶数个,输出0
cout<<__builtin_parity(m)<<endl;//奇数个,输出1









