300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 常见的位运算技巧总结(膜wys)

常见的位运算技巧总结(膜wys)

时间:2022-05-06 02:25:04

相关推荐

常见的位运算技巧总结(膜wys)

看了wys的论文,感觉获得了不少新姿势

这里总结一下

#include <iostream>using namespace std;typedef unsigned int u32;inline u32 read_bit(u32 x, int pos){return (x >> pos)&1;}inline u32 set_bit(u32 x, int pos){return x | (1u << pos); }inline u32 clear_bit(u32 x, int pos){return x & ~(1u << pos);}int cnt_table[1 << 16];void count_pre(){cnt_table[0] = 0;for(int i = 0; i < 1<<16; i++){cnt_table[i] = cnt_table[i >> 1] + (i & 1);}}inline int count(u32 x){return cnt_table[x >> 16] + cnt_table[x & 65535u];}inline int count_trailing_zeros(u32 x){int ret = 0;if(!(x & 65535u)) x >>= 16, ret |= 16;if(!(x & 255u)) x >>= 8, ret |= 8;if(!(x & 15u)) x >>= 4, ret |= 4;if(!(x & 3u)) x >>= 2, ret |= 2;if(!(x & 1u)) x >>= 1, ret |= 1;return ret + !x;}int clz_table[1 << 16];void clz_pre(){clz_table[0] = 16;for(int i = 1; i < 1 << 16; i++){clz_table[i] = clz_table[i >> 1] - 1;}}inline int count_learding_zero(u32 x){return x >> 16 ? clz_table[x >> 16] : 16 + clz_table[x & 65535u];}inline u32 lowbit(u32 x){return x & -x;}//ö¾Ù×Ó¼¯void subS(int S){for(int i = S; i; i = (i-1)&S){//do_something(i); }}int main() { return 0; }

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。