C++ 位运算函数

__builtin_parity(n)

该函数是判断n的二进制中1的个数的奇偶性

int n = 15;                     //二进制为1111
int m = 7;                      //二进制为111
cout<<__builtin_parity(n)<<endl;//偶数个1,输出0
cout<<__builtin_parity(m)<<endl;//奇数个1,输出1

__builtin_popcount(n)

该函数时判断n的二进制中有多少个1

int n = 15;                       //二进制为1111
cout<<__builtin_popcount(n)<<endl;//输出结果为4

__builtin_ctz(n)

该函数判断n的二进制末尾后面0的个数,n=0时结果未定义

int n = 1;                      //二进制为1
int m = 8;                      //二进制为1000
cout<<__builtin_ctzll(n)<<endl; //输出0
cout<<__builtin_ctz(m)<<endl;   //输出3

__builtin_clz(n)

n前导0的个数, n=0时结果未定义

long long n = 1;                //二进制为000....001 64位整数
int m = 8;                      //二进制为000...1000 32位整数
cout<<__builtin_clzll(n)<<endl; //输出63
cout<<__builtin_clz(m)<<endl;   //输出28

__builtin_ffs(n)

该函数判断n的二进制末尾最后一个1的位置,从1开始

int n = 1;                  //二进制为1
int m = 8;                  //二进制为1000
cout<<__builtin_ffs(n)<<endl;//输出1
cout<<__builtin_ffs(m)<<endl;//输出4

转载于:https://www.cnblogs.com/wafish/p/10465286.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值