C#中的位元運算介紹

來源:互聯網
上載者:User
在C#中可以對整型運算對象按位進行邏輯運算。按位進行邏輯運算的意義是:依次取被運算對象的每個位,進行邏輯運算,每個位的邏輯運算結果是結果值的每個位。C#支援的位邏輯運算子如表2.9所示。
運算子號 意義 運算物件類型 運算結果類型 對象數 執行個體
     ~ 位邏輯運算 整型,字元型 整型 1 ~a
    & 位邏輯運算 2 a & b
    | 位邏輯運算 2 a | b
    ^ 位邏輯異或運算 2 a ^ b
       << 左移運算 2 a<<4
         >> 右移運算 2 a>>2
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace 集合
  6. {
  7.     class 位元運算
  8.     {
  9.         public static void Main()
  10.         {
  11.             //1、位邏輯非運算
  12.             //位邏輯非運算是單目的,只有一個運算對象。位邏輯非運算按位對運算對象的值進行非運算,即:如果某一位等於0,就將其轉變為1;如果某一位等於1,就將其轉變為0。
  13.             //比如,對二進位的10010001進行位邏輯非運算,結果等於01101110,用十進位表示就是:
  14.             //~145等於110;對二進位的01010101進行位邏輯非運算,結果等於10101010。用十進位表示就是~85等於170。
  15.             //下面我們是用的有符號類型sbyte,結果就是-86
  16.             sbyte num1 = 85 ;
  17.             sbyte renum = (sbyte)~num1 ;
  18.             Console.WriteLine( "85位非運算結果:{0}" , renum ) ;
  19.             //如果我們用無符號類型來儲存,結果就是170
  20.             byte num2 = 85 ;
  21.             byte renum2 = (byte)~num2 ;
  22.             Console.WriteLine( "85位非運算結果:{0}" , renum2 ) ;
  23.             //2、位邏輯與運算
  24.             //位邏輯與運算將兩個運算對象按位進行與運算。與運算的規則:1與1等於1,1與0等於0 ,0與0等於0 。
  25.             //比如:10010001(二進位)&11110000等於10010000(二進位)。
  26.             // 99的二進位表示: 01100011
  27.             // 85的二進位表示: 01010101
  28.             // 與運算的結果 : 01000001 ( 十進位:65)
  29.             int num3 = 85 ; 
  30.             int num4 = 99 ;
  31.             int renum3 =  num3 & num4 ;
  32.             Console.WriteLine( "85 & 99 位與運算結果:{0}" , renum3 ) ;
  33.             
  34.            
  35.             //3、位邏輯或運算
  36.             //位邏輯或運算將兩個運算對象按位進行或運算。或運算的規則是:1或1等1,1或0等於1,
  37.             //0或0等於0。比如10010001(二進位)| 11110000(二進位)等於11110001(二進位)。
  38.             // 99的二進位表示: 01100011
  39.             // 85的二進位表示: 01010101
  40.             // 運算的結果 : 01110111 ( 十進位:119)
  41.             int num5 = 85 ;
  42.             int num6 = 99 ;
  43.             int renum4 = num5 | num6 ;
  44.             Console.WriteLine( "85 | 99 位或的結果:{0}" , renum4 ) ;
  45.            
  46.             //4、位邏輯異或運算
  47.             //位邏輯異或運算將兩個運算對象按位進行異或運算。異或運算的規則是:1異或1等於0,
  48.             //1異或0等於1,0異或0等於0。即:相同得0,相異得1。
  49.             //比如:10010001(二進位)^11110000(二進位)等於01100001(二進位)。
  50.             // 99的二進位表示: 01100011
  51.             // 85的二進位表示: 01010101
  52.             // 運算的結果 : 00110110 ( 十進位:54)
  53.             int num7 = 85 ;
  54.             int num8 = 99 ;
  55.             int renum5 = num7 ^ num8 ;
  56.             Console.WriteLine( "85 ^ 99 位異或的結果:{0}" , renum5 ) ;
  57.             
  58.             //5、位左移運算
  59.             //位左移運算將整個數按位左移若干位,左移後空出的部分0。比如:8位的byte型變數
  60.             //byte a=0x65(即二進位的01100101),將其左移3位:a<<3的結果是0x27(即二進位的00101000)。
  61.             
  62.             // 85的二進位表示: 01010101 
  63.             // 左移3位後變成了: 01010101000
  64.             int num9 = 85 ;
  65.             int rein6 = num9 << 3 ;
  66.             Console.WriteLine( "將85左移3位後的結果:{0}" , rein6 ) ;
  67.             
  68.             //6、位右移運算
  69.             //位右移運算將整個數按位右移若干位,右移後空出的部分填0。比如:8位的byte型變數
  70.             //Byte a=0x65(既(二進位的01100101))將其右移3位:a>>3的結果是0x0c(二進位00001100)。
  71.            
  72.             // 85的二進位表示: 01010101 
  73.             // 右移3位後變成了:00001010
  74.             byte num10 = 85 ;
  75.             byte rein7 = (byte)(num10 >> 3) ;
  76.             Console.WriteLine( "將85右移3位後的結果:{0}" , rein7 ) ;
  77.             //在進行位與、或、異或運算時,如果兩個運算對象的類型一致,則運算結果的類型就是運算對象的類型。比如對兩個int變數a和b做與運算,運算結果的類型還是int型。如果兩個運算
  78.             //對象的類型不一致,則C#要對不一致的類型進行類型轉換,變成一致的類型,然後進行運算。
  79.             //類型轉換的規則同算術運算中整型量的轉換則一致。
  80.             Console.ReadLine() ;
  81.         }
  82.     }
  83. }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.