C语言中位运算的巧用.doc_第1页
C语言中位运算的巧用.doc_第2页
C语言中位运算的巧用.doc_第3页
C语言中位运算的巧用.doc_第4页
C语言中位运算的巧用.doc_第5页
已阅读5页,还剩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_BITS 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)3GNU _builtin_popcount _builtin_ctz4pop(xx) /x3232 x=x-(x1)&0x55555555); x=(x&0x33333333)+(x2)&0x33333333); x=(x+(x4)&0x0f0f0f0f; x=x+(x8); x=x+(x16); returnx&0x0000003f; 4ABAB1NO(2N)2)=O(4N)2N,2N,S,N2S,2N,O(2N)2)=O(4N)11001111SuperSetIterating_All_SubSet(SuperSet) i = SuperSet;while (i 0)i = (i - 1) & SuperSet;NO(3N)1abs( x ) y=x31 ; return(xy)-y;/ (x+y)y x, y 322x=(x&0xaaaaaaaa)1)|(x&0x55555555)2)|(x&0x33333333)4)|(x&0x0f0f0f0f)8)|(x&0x00ff00ff)16)|(x&0x0000ffff)16);32x=311=(100110111)2x=3967811584=(11101100100000000000000000000000)23kN 0,1,2,N-1int s = (1 k) - 1;while (!(s & 1 _builtin_ctz(lo 1) C 1TagsC/C+, , ,0?1614 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_BITS 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;2a111LowbitBIT0x1Lowbit(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)3GNU _builtin_popcount _builtin_ctz4pop(xx)/x3232) x=x-(x1)&0x55555555); x=(x&0x33333333)+(x2)&0x33333333); x=(x+(x4)&0x0f0f0f0f; x=x+(x8); x=x+(x16); returnx&0x0000003f; 4ABAB1NO(2N)2)=O(4N)2N,2N,S,N2S,2N,O(2N)2)=O(4N)11001111SuperSetIterating_All_SubSet(SuperSet) i = SuperSet; while (i 0) i = (i - 1) & SuperSet;NO(3N)1abs( x ) y=x31 ; return(xy)-y;/ (x+y)y x, y 322x=(x&0xaaaaaaaa)1)|(x&0x55555555)2)|(x&0x33333333)4)|(x&0x0f0f0f0f)8)|(x&0x00ff00ff)16)|(x&0x0000ffff)16);32x=31

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论