移位運算符
& :按位與,其實與&&邏輯運算符有一致的地方:
| :按位或,同樣與||有類似的地方。
~:按位取反
^:按位異或
<<:左移運算符
>>:右移運算符
1.“<<”和“>>”運算符用於執行移位運算,分別稱為左移位運算符和右移位運算符。對於X<<N和X>>N形式的運算,含義是將X向左或向右移動N位,得到的結果的類型與X相同。此處,X的類型只能是int,uint、long或ulong,N的類型只能是int,N的類型只能是int,或者顯示轉換為這些類型之一,否則編譯程序時會出現錯誤。
注意:如果第一個操作數是int或uint(32位數),則移位數有第二個操作數的低5位給出(原因是:低5位可表示的數的范圍是0~24+23+22+21+20,即0~31,足夠一個 32位數移位使用),如果第一個操作數是long或ulong(64位數),則移位數由第二個操作數的低6位給出(原因同上)。在左移時,第一個操作數的高序位被放棄,低序空位用0填充。移位操作從不導致溢出。
舉例:
int值: 128
128轉二進制為:1000 0000
當執行 128>>6時, 二進制首位向右移位6位:1000 0000 -> 0000 0010 ,0000 0010轉十進制等於2,所以128>>6的值為:2
同理,128<<6時,二進制首位向左偏移6位:1000 0000 ->10 0000 0000 0000 ,10 0000 0000 0000轉十進制等於8192,所以128<<6的值為:8192
2."&"
運算符會對二進制相同位置上面的0和1進行對比,當相同位置數字相同時就返回這個相同的數,否則就返回0,是不是和&&運算符判斷兩個bool 一致則返回True,否則返回False類似。
舉例:
int值:96,127
96&127運算結果是96,如何計算的看下面講解:
96轉二進制: 01100000
128轉二進制:01111111
用&運算符計算結果:11000000 轉十進制=96
3.“|”運算符 的運算方式和"&"運算符判斷方式是一樣的,只是返回的結果不一樣, | 運算符判斷兩個二進制相同位置的0和1,只要其中一個位置的數字是1就返回1
舉例:
int值:96,127
96 | 127運算結果是127,如何計算的看下面講解:
96轉二進制: 01100000
127轉二進制:01111111
用|運算符計算結果:01111111 轉十進制=127
4.“^”運算符 的運算方式是判斷位置上面相同的數字時,如果兩個數相同,不論是0還是1都返回0,如果其中一個為1就返回1.而 | 是只要有一個只要位置上一個為1就返回1,所以名字叫異或(不同的返回或)。
舉例:
int值:96,127
96 ^127運算結果是31,如何計算的看下面講解:
96轉二進制: 01100000
128轉二進制:01111111
31轉二進制: 00011111
用^運算符計算結果:00011111轉十進制=31