C++ 位运算函数

刷力扣的时候发现的,还挺好用的,然而我自己在 Clion 里却用不了,还得研究研究阿巴巴。

int __builtin_popcount(unsigned int x)

返回 x 的二进制表示中 1 的个数。

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

int __builtin_parity(unsigned int x)

返回 x 的二进制表示中 1 的个数的奇偶性,奇数返回 1,偶数返回 0。

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

int __builtin_ffs(unsigned int x)

返回 x 的二进制表示的最后一个 1 的是从后向前第几位,从1开始数,x = 0 时返回 0。

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

int __builtin_clz (unsigned int x)

返回 x 的二进制表示的前导 0 的个数,x = 0 时未定义。

int n = 1;                              //二进制为00000000000000000000000000000001
int m = 8;                              //二进制为00000000000000000000000000001000
cout<< __builtin_clz(n);                //输出31
cout <<__builtin_clz(m);                //输出28

int __builtin_ctz (unsigned int x)

返回 x 的二进制表示末尾 0 的个数,x = 0 时未定义。

int n = 1;                              //二进制为1
int m = 8;                              //二进制为1000
cout<< __builtin_ctz(n);                //输出0
cout <<__builtin_ctz(m);                //输出3
这些函数都有相应的 usigned longusigned long long 版本,只需要在函数名后面加上 lll 就可以了,例如 __builtin_clzll(x)
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇