🌻開場語
親愛的讀者,大家好!我是一名正在學習編程的高校生。在這個博客里,我將和大家一起探討編程技巧、分享實用工具,并交流學習心得。希望通過我的博客,你能學到有用的知識,提高自己的技能,成為一名優秀的程序員。如果你有任何疑問或建議,請隨時在評論區留言,讓我們一起成長進步!現在,讓我們開始這場知識之旅吧!
個人主頁:FEN03
文章專欄:C語言
文章目錄
- 🌻開場語
- 🌻前言
- 🌻位操作符
- 1. 🌹&(按位與)
- 2. 🌹| (按位或)
- 3. 🌹^(按位異或)
- 4. 🌹~(按位取反)
- 🌻總結
- 🌻結束語
🌻前言
本文章,將會逐一介紹什么是位操作符,如何去用位操作符。文章內容僅是個人學習見解,如有錯誤,還請各位大佬指出!
🌻位操作符
位操作符有4種:
- &(按位與)
- | (按位或)
- ^(按位異或)
- ~(按位取反)
位操作符都是對二進制位進行操作的
注意:位操作符只能用于整數
1. 🌹&(按位與)
按位與是一個雙目運算符,按位與是對二進制位進行操作,那么它的操作規則是:對位的二進制位,有0為0,相同為1則為1 。
例子1:
#include<stdio.h>
int main()
{int a = -3; int b = 6; int c = a & b; printf("%d\n", c); return 0;
}
運行結果:
為什么會得到4呢?
解析:
-
因為是對二進制位操作的,所以我們需要寫出數值的二進制位,-3的二進制位是:
-
6的二進制位:
-
進行按位與:
最終的結果得到:4
2. 🌹| (按位或)
按位或是一個雙目運算符,是對二進制位操作,規則是:對位的二進制位,有1為1,相同0為0
例子1:
#include<stdio.h>
int main()
{int a = -6; int b = 3; int c = a | b; printf("%d\n", c); return 0;
}
運算結果:
是怎么得到5呢?
解析:
- 首先,我們需要寫出數值的二進制形式,-6的二進制:
- 然后寫出3的二進制:
- 進行按位或:
這樣最終的結果就能夠得到:-5
3. 🌹^(按位異或)
按位異或也是雙目運算符,也是對二進制位操作,規則是:相同為0,相異為1。
例子1:
#include<stdio.h>
int main()
{int a = -4; int b = 6; int c = a ^ b; printf("%d\n", c);return 0;
}
運行結果:
為什么能夠得到:-6
解析:
- 寫出-4的二進制位:
- 寫出6的二進制:
- 進行按位異或:
最終得到的值是:-6
對于按位異或,有一個知識補充:
例子1:
#include<stdio.h>
int main()
{int a1 = 1; int a2 = 2; int a3 = 3; int a4 = 4;int b = 0;int c1 = a1 ^ b; int c2 = a2 ^ b; int c3 = a3 ^ b; int c4 = a4 ^ b; printf("%d\n", c1); printf("%d\n", c2); printf("%d\n", c3); printf("%d\n", c4); return 0;
}
運行結果:
看結果,我們可以得出,n ^ 0 = n ,也就是一個數如果按位異或0,得到的結果是本身。
例子2:
#include<stdio.h>
int main()
{int a = 5;int b = a ^ a;printf("%d\n", b); int a1 = 6;int b1 = a1 ^ a1; printf("%d\n", b1); int a2 = 4;int b2 = a2 ^ a2;printf("%d\n", b2); return 0;
}
運行結果:
我們可以得出結論:n ^ n = 0,也就是一個數如果按位異或本身,得到的結果是0
4. 🌹~(按位取反)
按位取反是單目運算符,同樣的是對二進制位進行操作,規則是:0為1,1為0。
例子1:
#include<stdio.h>
int main()
{int a = 8; int b = ~a; printf("%d\n", b); return 0;
}
運算結果:
是怎么得到:-9 的呢?
解析:
- 寫出8的二進制:
- 進行按位取反:
最終的結果就是:-9
🌻總結
- &(按位與),|(按位或),^(按位異或),這三個都是雙目運算符,操作數是2個。
- ~(按位取反)是單目運算符,操作數是1個。
- 這些操作符都需要了解規則,其中按位異或復雜一點,需要多了解。
🌻結束語
非常感謝您花時間閱讀我的博客,希望我的分享能為您帶來收獲。如果您對本文有任何想法或疑問,歡迎在評論區留言交流。如果您喜歡我的博客,請繼續關注,我會定期更新更多精彩內容。最后,別忘了行動起來的力量,讓我們一起實踐這些方法,見證自己的成長和進步!
再見,祝您生活愉快!
如有錯誤,或者疑惑,還請評論區留言,或者私信即可,感謝支持!