位运算技巧总结

位运算技巧总结

ID:27803492

大小:175.64 KB

页数:10页

时间:2018-12-06

位运算技巧总结_第1页
位运算技巧总结_第2页
位运算技巧总结_第3页
位运算技巧总结_第4页
位运算技巧总结_第5页
资源描述:

《位运算技巧总结》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、位运算应用口诀清零取反要用・,某位置"J用或(1&0=0,111=1>0

2、1=1)若要取反利交换,轻轻松松用界或(与I异或相当于取反,与0异或相当于不变。「20、0“1二1,「0二1、0八0二0)移位运算要点1它们都是双目运算符,两个运算分量都是整形,结果也是整形。2〃y左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。3〃>>〃右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。4〃>>>〃运算符,右边的位被挤掉,对于左边移出的空位一概补上0。位运算符的应用(源操作数s掩码

3、mask)(1)按位与一&1淸零特定位(mask中特定位置0,其它位为1,s二s&mask)2取某数中指定位(mask中特定位置1,其它位为0,s=s&mask)⑵按位或一I常用来将源操作数某些位置1,其它位不变。(mask中特定位置1,其它位为Os二s

4、mask)⑶位异或一八1使特定位的值取反(mask中特定位置1,其它位为0s=s^mask)2不引入第三变量,交换两个变量的值(设a=al,b=bl)目标操作操作后状态a=al^bla=aba=albl,b=blb=alblblb=aba=albl,b=ala二blWaia=a"ba=bl,b=al二

5、进制补码运算公式:—x八x+1二~(x-l)〜X=-X-1-(~x)=x+1~(-x)=X-lx+y二x-~y-1二(x

6、y)+(x&y)x-y=x+"y+1=(x广y)-(~x&y)x"y=(x

7、y)-(x&y)x

8、y=(x&、y)+yx&y=Cx

9、y)-~xx=y:〜(x-y

10、y-x)x!=y:x-y

11、y-xx〈y:(x-y厂((x"y)&((x-y厂x))x<=y:(x

12、~y)&((x"y)

13、~(y-x))x

14、(Cx

15、y)&(x-y))//无符号x,y比较x<=y:Cx

16、y)&((x»

17、"(y-x))//无符号x,y比较应用举例仃

18、)判断int型变邀a是奇数还是偶数a&l=0偶数a&l=1奇数(1)取int型变量a的第k位(k=0,1,2sizeof(int)),即a»k&l(2)将int型变量a的第k位清0,即a二a&~(l«k)⑷将int型变量a的第k位置1,即a=a

19、(1«k)(5)int型变量循环左移k次,即a二a«k

20、a»16~k(设sizeof(int)=16)(6)int型变量a循环右移k次,即a=a»k

21、a<<16-k(设sizeof(int)=16)(7)整数的平均值对于两个整数x,y,如果用(x+y)/2求平均值,会产生溢出,因为x+y可能会大于INTJIAX

22、,但是我们知道它们的平均值是肯定不会溢出的,我们用如卜•算法:intaverage(intx,inty)//返回X,Y的平均值ireturn(x&y)+((x"y)>〉l);}(5)判断一个整数是不是2的幕,对于一个数x>二0,判断他是不是2的帚booleanpower2(intx)Ireturn((x&(xT))=0)&&(x!=0);(6)不用temp交换两个整数voidswap(intx,inty)二y;y僅x;X"=y;}(7)计算绝对值intabs(intx)Iinty;y=x»31;return(x)-y;//or:(x+y厂y}仃1)取

23、模运算转化成位运算(在不产生溢出的情况F)a%(2~n)等价于a&(2、-1)(12)乘法运算转化成位运算(在不产生溢出的情况F)a*(2、)等价于a«n(13)除法运算转化成位运算(在不产生溢出的情况F)a/(2、)等价于a»n例:12/8=12»3仃4)a%2等价于a&1(15)if(x==a)x=b;elsex=a;等价于x=a"b"x;(16)x的相反数表示为Cx+1)实例功能I示例丨位运算去掉最后一位

24、(101101->10110)

25、X»1在最后加一个0

26、(101101->1011010)

27、x«1在最后加一个1

28、(101101->101101

29、1)

30、x«1+1把最后一位变成1I(101100->101101)

31、X

32、1把最后一位变成0

33、(101101->101100)Ix

34、1-1最后一位取反

35、(101101->101100)丨X八1把右数第k位变成1

36、(101001->101101,k二3)

37、X

38、(1«(k-1))把右数第k位变成0

39、(101101->101001,k二3)

40、x&~(1«(k-1))右数第k位取反

41、(101001->101101,k=3)

42、x(1«(k-1))取末三位

43、(1101101->101)丨x&7取末k位

44、(1101101->1101,k二5)

45、x&((1«k)-l)取

46、右数笫k位

47、(1101101->1,24)

48、x»(k-1)&1把末k位变成1

49、(101001-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。