C\C++位运算与位移运算

位运算符:
   
   & //位与运算符
   |  //位或运算符
   ~ //位非运算符
   ^ //位异或运算符

 

位与运算规则:

8 & 3  //8与3

0 & 00
0 & 10
1 & 00
1 & 11

//对应位都是1,结果才是1

      0 0 0 0 1 0 0 0
&     0 0 0 0 0 0 1 1
————————————————————————
      0 0 0 0 0 0 0 0

// 所以 8 & 3 = 0

位或运算规则:

8 | 3  //8或3

0 | 00
0 | 11
1 | 01
1 | 11

//对应位只要有1,结果就是1

      0 0 0 0 1 0 0 0
|     0 0 0 0 0 0 1 1
————————————————————————
      0 0 0 0 1 0 1 1

// 所以 8 | 3 = 11

位非运算规则:

~8   //位非8

~ 01
~ 10

//位取反,位非0得1,位非1得0

~  0 0 0 0 1 0 0 0
——————————————————————
   1 1 1 1 0 1 1 1

// 所以 ~ 8  = 247

位异或运算规则:

8 ^ 3  //8异或3

0 ^ 00
0 ^ 11
1 ^ 01
1 ^ 10

//对应位不同时为0或者不同时为1,结果就是1,如果值相同,结果就为0

      0 0 0 0 1 0 0 0
^     0 0 0 0 0 0 1 1
————————————————————————
      0 0 0 0 1 0 1 1

// 所以 8 ^ 3 = 11

-------------------------------------------------------------------------------------------------------------------------------------------------------

位移运算符:

 << //左移运算符
 >> //右移运算符

 

左移运算规则:

 

posted on 2022-09-20 10:48  xueshaoshan  阅读(43)  评论(0)    收藏  举报

导航