0
点赞
收藏
分享

微信扫一扫

c++ 高效位运算函数之 __builtin_

伽马星系 2022-02-21 阅读 56
c++

总结一下位运算的好用函数

这些函数都有相应的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

举报

相关推荐

0 条评论