程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 位運算反(~)與(&)異或(^)或(|)右移(>>)左移(<<),運算反

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

編輯:C#入門知識

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


先知道這兩個二進制數據的特點:   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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved