码迷,mamicode.com
首页 > 编程语言 > 详细

复习C语言 位运算

时间:2015-06-19 23:11:10      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

0x01:按位与(&)

作用:

1)清零。如果想让一个单元清零,即使其全部二进制位为0

2)取一个数中某些指定位。即将想要的那些位置1.

例:如有一个整数a(2个字节),想要其中的低字节,只需将a与(377,8进制 == 00000000 11111111)按位与即可。

3)要想将哪一位保留下来,就与一个数&运算,此数在该位取1.

0x02:按位或(|)

作用:

常用来对一个数据的某些位定值1,例:a(16位整数),a|0377,则低8位全置1,高8位保持原样

0x03:异或(^)

作用:

1)使特定位翻转

假设有01111010,想使其低4位翻转,即1变0,0变1,。可以将它与00001111进行^运算。

2)与0相^保留原值

3)交换两个值,不用临时变量

假设a=3,b=4

a=a^b;

b=b^a;

a=a^b;

0x03:取反(~)

作用:

若一个整数,若想使最低一位为0,可以用一致性较好的a=a&~1;(~运算符优先级比算术运算符,关系运算符,逻辑运算符和其他运算符都高)

0x03:左移(<<)

作用:

高位左移后溢出,舍弃.

一般用来取低位

0x04:右移(>>)

作用:

低位右移后被舍弃,对无符号数,高位补0

一般用来取低位

右移一位相当于除以2,右移n位相当于除以2的n次方

注意:在右移时,需要注意符号位的问题。对无符号数,右移时左边高位移入0,对于有符号数,如果原来符号位为0(该数为正),则左边也是移入0,如果符号位原来为1(即负数),则左边移入0还是1,取决于计算机系统。





复习C语言 位运算

标签:

原文地址:http://my.oschina.net/Yuqingmu/blog/468996

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!