位運算反(~)與(&)異或(^)或(|)右移(>>)左移(<<)


先知道這兩個二進制數據的特點:   1=0000 0000 0000 0000 0000 0000 0000 0001 

                                             -1=1000 0000 0000 0000 0000 0000 0000 0001 

            1.最高位(首位)表示正負(0為正,1為負)

            2.最低位(末位)表示奇偶(0為偶,1為奇)

一、按位取反(~)

十進制1按位取反后=?

分析:

1. 十進制1轉為二進制為:1= 0000 0000 0000 0000 0000 0000 0000 0001 

2. 按位取反:把原來的二進制得到一個新的二進制,原來是0的則變為1,1的則變為0。

            1按位取反后得到   1111 1111 1111 1111 1111 1111 1111  1110

3.二進制的最高位(首位)表示正負(1為負,0為正),如果是負數,如果是負數,則需要用計算機中的補碼來表示。

   補碼:補碼=符號位(最高位)以后按位取反再加1. 

                        補碼為   1000 0000 0000 0000 0000 0000 0000  0010

4. 結果為:把補碼轉為十進制:  -2;

 ~1==-2

 

十進制-1按位取反后=?

 1.            -1的二進制是 1000 0000 0000 0000 0000 0000 0000 0001 

 2. 負數是以其補碼的形式儲存的

       -1在計算機中存的是 1111 1111 1111 1111 1111 1111 1111 1111

3.    按位取反:             0000 0000 0000 0000 0000 0000 0000 0000  

4.結果為:轉為十進制:0

~-1==0

二、按位與and(&)

按位與and(&): 相同位的兩個數字都為1,則為1;若有一個不為1,則為0。

25&3=>    25= 0000 0000 0000 0000 0000 0000 0001 1001

                 3= 0000 0000 0000 0000 0000 0000 0000 0011

-------------------------------------------------------------------------------------

                     0000 0000 0000 0000 0000 0000 0000 0001

25&3==1

 

三、按位異或(^)

按位異或(^):相同位不同則為1,相同則為0

25^3=>    25= 0000 0000 0000 0000 0000 0000 0001 1001

                 3=  0000 0000 0000 0000 0000 0000 0000 0011

-------------------------------------------------------------------------------------

                      0000 0000 0000 0000 0000 0000 0001 1010

25&3==26

四、按位或(|)

按位或(|):相同位只要一個為1即為1。

 

25|3=>    25=  0000 0000 0000 0000 0000 0000 0001 1001

 

                 3=  0000 0000 0000 0000 0000 0000 0000 0011

 

-------------------------------------------------------------------------------------

 

                      0000 0000 0000 0000 0000 0000 0001 1011

25|3==27

五、右移(>>)

     把1的位置向右移n位,超出的就舍掉

           15=0000 0000 0000 0000 0000 0000 0000 1111

     15>>1=0000 0000 0000 0000 0000 0000 0000 0111

     15>>1=7

     :右移1位即除以21;,並且取整。

      n>>4==n/(24)

      64>>4==4

六、左移(<<)

  把1的位置向左移n位,超出的就舍掉

 :左移1位即乘以21;,並且取整。

      n<<4==n*24

      2<<4==32

 


免責聲明!

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



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