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

来源:互联网 发布:阿里云上海当面核验 编辑:程序博客网 时间:2024/05/17 22:24
  • 刷题时偶然发现了该系列函数,感觉不错,分享下

1.__builtin_popcount(n)

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

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

2.__builtin_parity(n)

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

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

3.__builtin_ffs(n)

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

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

4.__builtin_ctz(n)

该函数判断n的二进制末尾后面0的个数,当n为0时,和n的类型有关

int n = 1;//1int m = 8;//1000cout<<__builtin_ctzll(n)<<endl;//输出0cout<<__builtin_ctz(m)<<endl;//输出3
  • 如有错误或遗漏,请私聊下UP,thx
原创粉丝点击