引入:顯而易見,計算機裡的資訊都是按二進制存儲的,然而它們是如何運算的呢,是以說就要學習位運算啦。
一.簡單看看
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語言中位運算符之間,按優先級順序排列為
-
C語言中位運算符之間,按優先級順序排列為
1 ~
2 << 、>>
3 &
4 ^
5 |
6 &= 、 ^= 、|= 、<<= 、>>=
tips:偶爾遇到<<<是指無符号右移。
二.稍微進階(引用)