位运算
c有这些按位运算
& 按位的与
如果(x)i ==1并且(y)i ==1,那么(x&y) = 1;
否则(x&y) = 0;
01011010 & 10001100 = 00001000 = 8
应用
(1)希望让某一位或某些位为0
11111110 &10100101 = 10100100
(2)取一个数当中一段
00 00 00 00 ff &00 00 00 11 = 00 00 00 11
-------------------------------------------------------------------------------------------------------------------------
| 按位的或
只要有一个为1就是1 (x)i | (y)i=1
-------------------------------------------------------------------------------------------------------------------------
~ 按位的取反
把每一位反转过来,1变0 0变1
-------------------------------------------------------------------------------------------------------------------------
^ 按位的异或
如果(x)i == (y)i ,那么(x^y) = 0;
否则(x^y) == 1
对一个数做两遍异或等于什么也没做
---------------------------------------------------------------------------------------------------------------------------
<< 左移
10100101 2
1010010100 去掉头两位就是结果
x << =1 等价于x*=2
x<<=n等价于 x*=2的n次方
>> 右移
x >> =1 等价于x/=2
x>>=n等价于 x/=2的n次方
x<< - 2 是没有定义的,移位不要用负数
浙公网安备 33010602011771号