首页 > 代码库 > C中按位运算符简介

C中按位运算符简介

六种常见按位运算符:按位与(&)、按位或(|)、按位异或(^)、按位非(~)、按位左移(<<)、按位右移(>>).

这些运算符都只能用于整数类型,~是一元运算符,其他都是二元运算符。

1、按位与(&):合并操作数的对应位,如果两个位都是1,结果为1;否则,结果为0.如:

x      00001101

y      00000110

x&y  00000100

2、按位或(|):对应位中的两位都是0,则结果为0;否则为1.

x      00001101

y      00000110

x|y   00001111

3、按位异或(^):如果对应位的两位是不同的,则结果为1,否则为0

x      00001101

y      00000110

x^y   00001011

4、按位非(~):翻转操作数的位,1变0,0变1.

x      00001101

~x    11110010

5、按位左移(<<):将操作数向左移动指定位数,右边补0.如

x          00001100

x<<3   01100000

6、按位右移(>>):将操作数向右移动指定位数,对于不带符号的数值,右移时会在左边补0.

unsigned int value =http://www.mamicode.com/65372U;
unsigned int result=value >>2;

result结果为16343.

value             1111  1111 0101 1100

value >>2     0011  1111 1101  0111

对于带符号的的负值,其最左一位是1.则移动结果取决于系统。大多数情况下,符号位会扩散,即左边会补1.

int  value=http://www.mamicode.com/-164;
int result=value>>2;

result结果为-41.

value            1111  1111  0101  1100

value>>2     1111  1111  1101  01111

从上面结果可以看出,左移一位表示乘以2,以此类推。右移一位表示除以2,以此类推。