>","&","|","^"" type="hidden"/>

c#二進制移位運算符 "<<"及">>","&","|","^"


移位運算符
& :按位與,其實與&&邏輯運算符有一致的地方:
| :按位或,同樣與||有類似的地方。
~:按位取反
^:按位異或
<<:左移運算符
>>:右移運算符
 
   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
 
   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM