c语言的按位运算的运算符
& 按位与
| 按位或
~ 按位取反
^ 按位异或
<< 左移
>> 右移
1,&(按位与)
如果(X)i==1并且(y)i==1,那么(x&y)i=1;
否则的话(x&y)i=0;
按位与常用于两种应用:
1.1 让某一位或某些位为0: X & 0XFE
例子:0101 0101 & 1111 1110
0101 0101
1111 1110
结果: 0101 0100
1.2 取一个数中的一段:x & 0x0F
例子:0101 1010 & 0000 1111
0101 1010
0000 1111
结果:0000 1010
2,|(按位或)
如果(X)i==1 或(y)i==1,那么(x|y)i=1;
否则的话(x&y)i=0;
按位与常用于两种应用:
2.1 使得一位或几位为1: x | 0x 01
例子: 0101 1010 | 0000 0001
0101 1010
0000 0001
结果: 0101 0111
2.2 把两个数拼起来: 0x0F | 0xF0
例子:0000 1111 | 1111 0000
0000 1111
1111 0000
结果: 1111 1111
3, ~ 按位取反
把1变成0,把0变成1
例子: ~(1010 0101)
结果: 0101 1010
4, ^ 按位异或
如果(X)i ==(y)i,那么(x^y)i=0;
否则的话(x^y)i=1;
如果两个位相等,结果为0,不想等,结果为1;
例子: (1010 1010)^(1010 0101)
1010 1010
1010 0101
结果: 0000 1111
对一个变量异或两次等于什么都没做,还是原来那个数;
x^y^y=x;
5, << 左移
x<<y (等价于 )
x中的所有位向左移动y个位置,右边填0
例子: (1010 0101)<<1
结果 : 0100 1010
(1010 0101)<<2
结果: 1001 0100
6,>> 右移
x>>y(等价于)
x中的所有位向右移动y个位置,左边填0
例子: (1010 0101)>>1
结果 : 0101 0010
(1010 0101)>>2
结果:0010 1001