《C语言中位运算的巧用.doc》由会员分享,可在线阅读,更多相关《C语言中位运算的巧用.doc(6页珍藏版)》请在金锄头文库上搜索。
1、C 2012/3/21 by 1X2N24816.X24816101001000100001010110111011110X2N21int CountNumberOfOne(int number)int counter = 0;while (number)counter+;number &= number - 1 ;return counter;1A1010B1100A&B=1000A|B=1110AB=0110A=11110101 1AA8ababab0A1001B3AB1b2bb2bGNU GCC/G+ A=-1ABB-11xx0 232646410A=1011 0131xx ALL_BI
2、TS 1 A|B A&B A& B ALL_BITSAbit A|=1bitbit A=1bitbit A&=1bitbit (A&1bit)!=01swap(a, b)a=b;b=a;a=b;2a111 LowbitBIT0x1Lowbit(x)=x&(x(x-1)Lowbit(x)=x&(x-1)Lowbit(x)=x&-xx1x&x-1 Cx (x-1) x-110101N 0) Pdep= Index(K & -K);g2/Index(a)a2 Dfs(dep+1, mask (K & -K); K = K & -K;O(N!)O(NN)21NNx12N-123128-132484CCPUBSFBSRGNU_builtin_clz0_builtin_ctz0CC+0312xxLowbit(x)01x112Cntx x1Cntx = Cntx 1 + (x & 1)