位运算

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 是没有定义的,移位不要用负数

 

posted @ 2021-12-13 17:09  maintains  阅读(35)  评论(0)    收藏  举报