C++位运算函数之__builtin_

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

该函数由GCC内建函数,不需要包含额外的头文件

1、__builtin_popcount(n)

该函数判断n的二进制表示中1的个数

int n = 489;//二进制为111101001
cout << __builtin_popcount(n) << '\n';//输出为6

需要注意的是:
对于不同的数据类型,该函数有所改变;
int 类型数据,应使用 __builtin_popcount() ;
long int 类型数据,应使用 __builtin_popcountl() ;
long long int 类型数据,应使用 __builtin_popcountll();

2、__builtin_parity(n)

该函数判断n的二进制表示中1的个数的奇偶性;
奇数个1,则输出1;偶数个1,则输出0

int n = 489;//二进制表示为111101001
int m = 488;//二进制表示为111101000
cout << __builtin_parity(n) << '\n';//偶数个1,输出为0
cout << __builtin_parity(m) << '\n';//奇数个1,输出为1

3、__builtin_ffs(n)

该函数返回n的二进制表示中末尾1的位置,从1开始计数

int n = 489;//二进制表示为111101001
int m = 488;//二进制表示为111101000
cout << __builtin_ffs(n) << '\n';//输出为1
cout << __builtin_ffs(m) << '\n';//输出为4

4、__builtin_ctz(n)

该函数判断n的二进制表示中末尾0的个数;
当n为0时,和n的奇偶性有关

int n = 489;//二进制表示为111101001
int m = 488;//二进制表示为111101000
cout << __builtin_ctz(n) << '\n';//输出为0
cout << __builtin_ctz(m) << '\n';//输出为3
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值