天天看點

位運算的簡單應用

引入:顯而易見,計算機裡的資訊都是按二進制存儲的,然而它們是如何運算的呢,是以說就要學習位運算啦。

一.簡單看看

0.先把全部拉出來看看:

運算符  含義

&    按位與

|    按位或

^    按位異或

~    取反

<<     左移

>>    右移

tips_1:~不是二目運算符

tips_2:位運算不能用實型資料

tips_3:位運算不是邏輯運算(邏輯運算符“&&”,“||”,“!”等)

tips_4:0與1分别表示false和true;

1.按位與

(1&1)=1;

(1&0)=0;

(0&0)=0;

由上面三個式子,可知,“&”隻有在兩個變量都取1時才為1,其他都為0;

01010100

00111011 &

——————

00010000

2.按位或

(1|1)=1;

(1|0)=1;

(0|0)=0;

由上面三個式子,可知,“|”隻要一個變量取1時就為1,而兩個都為0時才為0;

01010100

00111011 |

——————

01111111

3.按位異或

(1^1)=0;

(1^0)=1;

(0^1)=1;

(0^0)=0;

可以看出,如果某位不同則該位為1, 否則該位為0;

01010100

00111011 ^

——————

00010000

4.取反

額,這個。。。(好吧,就是把1變成0,0就變成1);

5.左移和右移

“<<”就是将一個二進制數向左移一位(後面加個0)

“>>”就是将一個二進制數向右移一位(後面去一位)

是以“<<”就是将一個數乘2(類比十進制,後面加個0就是乘10)

“>>”就是将一個數除以2;

6.優先級

C語言中位運算符之間,按優先級順序排列為

  1. C語言中位運算符之間,按優先級順序排列為

    1 ~

    2 << 、>>

    3 &

    4 ^

    5 |

    6 &= 、 ^= 、|= 、<<= 、>>=

tips:偶爾遇到<<<是指無符号右移。

二.稍微進階(引用)

繼續閱讀