看了wys的论文,感觉获得了不少新姿势
这里总结一下
#include <iostream>
using namespace std;
typedef unsigned int u32; inline u32 read_bit(u32 x, int pos){
return (x >> pos)&;
}
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[ << ];
void count_pre(){
cnt_table[] = ;
for(int i = ; i < <<; i++){
cnt_table[i] = cnt_table[i >> ] + (i & );
}
}
inline int count(u32 x){
return cnt_table[x >> ] + cnt_table[x & 65535u];
} inline int count_trailing_zeros(u32 x){
int ret = ;
if(!(x & 65535u)) x >>= , ret |= ;
if(!(x & 255u)) x >>= , ret |= ;
if(!(x & 15u)) x >>= , ret |= ;
if(!(x & 3u)) x >>= , ret |= ;
if(!(x & 1u)) x >>= , ret |= ;
return ret + !x;
} int clz_table[ << ];
void clz_pre(){
clz_table[] = ;
for(int i = ; i < << ; i++){
clz_table[i] = clz_table[i >> ] - ;
}
} inline int count_learding_zero(u32 x){
return x >> ? clz_table[x >> ] : + clz_table[x & 65535u];
} inline u32 lowbit(u32 x){
return x & -x;
} //ö¾Ù×Ó¼¯
void subS(int S){
for(int i = S; i; i = (i-)&S){
//do_something(i);
}
} int main() { return ; }