首页 > 代码库 > 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,以此类推。