前言:spa
平時在實際工做中不多用到這個,雖然都是一些比較基礎的東西,但一旦遇到了,又不知所云。恰好最近接觸了一些相關這方面的項目,因此也算是對 這些內容從新溫習實踐了一遍。因此這篇不只做爲我的備忘,也分享給各位重溫一遍。code
要學會位運算,首先要清楚什麼是位運算?程序中的全部內容在計算機內存中都是以二進制的形式儲存的(即:0或1),位運算就是直接對在內存中的二進制數的每位進行運算操做。對象
瞭解:blog
在C#中能夠對整型運算對象按位進行邏輯運算。按位進行邏輯運算的意義是:依次取被運算對象的每一個位,進行邏輯運算,每一個位的邏輯運算結果是結果值的每一個位內存
運算符號
|
意義
|
運算對象類型
|
運算結果類型
|
對象數
|
實例
|
~
|
位邏輯
非運算
|
整型,字符型
|
整型
|
1
|
~a
|
&
|
位邏輯
與運算
|
2
|
a & b
|
||
|
|
位邏輯
或運算
|
2
|
a | b
|
||
^
|
位邏輯
異或運算
|
2
|
a ^ b
|
||
<<
|
位
左移運算
|
2
|
a<<4
|
||
>>
|
位
右移運算
|
2
|
a>>2
|
開始:ci
1、位邏輯非運算it
位邏輯非運算是單目的,只有一個運算對象。位邏輯非運算按位對運算對象的值進行非運算。符號爲:~io
即:若是某一位等於0,就將其轉變爲1;若是某一位等於1,就將其轉變爲0table
對二進制的10010001進行位邏輯非運算,結果等於01101110class
用十進制:~145等於110
2、位邏輯與運算
位邏輯與運算將兩個運算對象按位進行與運算。符號爲&。
運算規則爲:1&1=1;0&1=0;0&0=0
#region 位運算與運算 int a = 11; //11的二進制是0000 1011 int b = 13; //13的二進制是0000 1101 Console.WriteLine(a & b); //11 & 13的結果就是0000 1001 即結果是9 Console.Read(); #endregion
3、位邏輯或運算
位邏輯或運算將兩個運算對象按位進行或運算。符號爲 |
運算規則爲:1|1=1;1|0=1;0|0=0
#region 位運算或運算 int a = 11; //11的二進制是0000 1011 int b = 13; //13的二進制是0000 1101 Console.WriteLine(a | b); //11 | 13的結果就是0000 1111 即結果是15 Console.Read(); #endregion
4、位邏輯異或運算
位邏輯異或運算將兩個運算對象按位進行異或運算。符號爲^
運算規則:1^1=0;1^0=1;0^0=0 (相同得0,相異得1)
#region 位運算異或運算 int a = 11; //11的二進制是0000 1011 int b = 13; //13的二進制是0000 1101 Console.WriteLine(a ^ b); //11 ^ 13的結果就是0000 0110 即結果是6 Console.Read(); #endregion
5、位左移運算
位左移運算將整個數按位左移若干位,左移後空出的部分0。符號爲:<<
運算規則:a<<1 =a乘以2的1次方;a<<2 =a乘以2的2次方;a<<3 =a乘以2的3次方
#region 位左移運算 int a = 11; //11的二進制是0000 1011 Console.WriteLine(a << 2); //0000 1011 左位移2位的結果就是0010 1100 即結果是44 (11*2^2=44) Console.Read(); #endregion
6、位右移運算
位右移運算將整個數按位右移若干位,右移後空出的部分填0。符號爲:>>
運算規則:a>>1 = a整除2的1次方;a>>2 = a整除2的2次方;a>>3 = a整除2的3次方
#region 位右移運算 int a = 11; //11的二進制是0000 1011 Console.WriteLine(a >> 2); //0000 1011 右位移2位的結果就是0000 0010 即結果是2 (11÷(2^2)=2) Console.Read(); #endregion
總結:
1.位運算,雖然平時不多用到位運算符,可是在某些時候,這些確實可以給咱們提供很好的解決方案。
2.在實際應用中,不斷的重溫基礎的知識,增強鞏固。畢竟不少時候,只有將基礎的知識打牢固,後續才能更好的功能拓展和衍生