亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#運算符之與,或,異或及移位運算小結

2020-01-24 03:06:00
字體:
來源:轉載
供稿:網友

1.剖析異或運算(^)

二元 ^ 運算符是為整型和 bool 類型預定義的。對于整型,^ 將計算操作數的按位“異或”。對于 bool 操作數,^ 將計算操作數的邏輯“異或”;也就是說,當且僅當只有一個操作數為 true 時,結果才為 true。

數值運算舉例

按位異或的3個特點:
(1) 0^0=0,0^1=1  0異或任何數=任何數
(2) 1^0=1,1^1=0  1異或任何數-任何數取反
(3) 1^1=0,0^0=0  任何數異或自己=把自己置0

例如:10100001^00010001=10110000

按位異或的幾個常見用途:
(1) 使某些特定的位翻轉
例如對數10100001的第2位和第3位翻轉,則可以將該數與00000110進行按位異或運算。
  0100001^00000110 = 10100111

(2) 實現兩個值的交換,而不必使用臨時變量。
例如交換兩個整數a=10100001,b=00000110的值,可通過下列語句實現:
    a = a^b;   //a=10100111
    b = b^a;   //b=10100001
    a = a^b;   //a=00000110

(3) 在匯編語言中經常用于將變量置零:
    xor   a,a

(4) 快速判斷兩個值是否相等
舉例1: 判斷兩個整數a,b是否相等,則可通過下列語句實現:
        return ((a ^ b) == 0)

舉例2: Linux中最初的ipv6_addr_equal()函數的實現如下:

復制代碼 代碼如下:

    static inline int ipv6_addr_equal(const struct in6_addr *a1, const struct in6_addr *a2)
    {
        return (a1->s6_addr32[0] == a2->s6_addr32[0] &&
            a1->s6_addr32[1] == a2->s6_addr32[1] &&
            a1->s6_addr32[2] == a2->s6_addr32[2] &&
            a1->s6_addr32[3] == a2->s6_addr32[3]);
    }

可以利用按位異或實現快速比較, 最新的實現已經修改為:
復制代碼 代碼如下:

    static inline int ipv6_addr_equal(const struct in6_addr *a1, const struct in6_addr *a2)
    {
    return (((a1->s6_addr32[0] ^ a2->s6_addr32[0]) |
        (a1->s6_addr32[1] ^ a2->s6_addr32[1]) |
        (a1->s6_addr32[2] ^ a2->s6_addr32[2]) |
        (a1->s6_addr32[3] ^ a2->s6_addr32[3])) == 0);
    }

2 & 運算符(與)

1 & 0 為0
0 & 0 為0
1 & 1 為1

3 | 運算符(或)

1 & 0 為1
0 & 0 為0
1 & 1 為1

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

C#移位運算(左移和右移)

C#是用<<(左移) 和 >>(右移) 運算符是用來執行移位運算。

左移 (<<)

將第一個操作數向左移動第二個操作數指定的位數,空出的位置補0。
左移相當于乘. 左移一位相當于乘2;左移兩位相當于乘4;左移三位相當于乘8。

  x<<1= x*2
  x<<2= x*4
  x<<3= x*8
  x<<4= x*16

同理, 右移即相反:

右移 (>>)
將第一個操作數向右移動第二個操作數所指定的位數,空出的位置補0。

右移相當于整除. 右移一位相當于除以2;右移兩位相當于除以4;右移三位相當于除以8。

  x>>1= x/2
  x>>2= x/4
  x>>3= x/8
  x>>4=x/16


 int i = 7;
 int j = 2;
 Console.WriteLine(i >> j);   //輸出結果為1

當聲明重載C#移位運算符時,第一個操作數的類型必須總是包含運算符聲明的類或結構,并且第二個操作數的類型必須總是 int,如:

復制代碼 代碼如下:

class Program   
{       
 static void Main(string[] args)       
 {           
  ShiftClass shift1 = new ShiftClass(5, 10);           
  ShiftClass shift2 = shift1 << 2;           
  ShiftClass shift3 = shift1 >> 2;           
  Console.WriteLine("{0} << 2 結果是:{1}", shift1.valA,  shift2.valA);           
  Console.WriteLine("{0} << 2 結果是:{1}", shift1.valB,shift2.valB);           
  Console.WriteLine("{0} >> 2 結果是:{1}", shift1.valA,  shift3.valA);           
  Console.WriteLine("{0} >> 2 結果是:{1}", shift1.valB, shift3.valB);           
  Console.ReadLine();       
 }       
 public class ShiftClass       
 {          
  public int valA;          
  public int valB;           
  public ShiftClass(int valA, int valB)           
  {               
   this.valA = valA;               
   this.valB = valB;           
  }           
  public static ShiftClass operator <<(ShiftClass shift, int count)           
  {               
   int a = shift.valA << count;               
   int b = shift.valB << count;               
   return new ShiftClass(a, b);           
  }           
  public static ShiftClass operator >>(ShiftClass shift, int count)           
  {               
   int a = shift.valA >> count;               
   int b = shift.valB >> count;               
   return new ShiftClass(a, b);           
  }       
 }   
}

因為位移比乘除速度快.對效率要求高,而且滿足2的冪次方的乘除運方,可以采用位移的方式進行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中日韩午夜理伦电影免费| 日韩中文字幕免费看| 国产亚洲欧美日韩一区二区| 国产精品第七影院| 久久97久久97精品免视看| 国产主播喷水一区二区| 久久精品视频在线播放| 少妇av一区二区三区| 久久精品成人一区二区三区| 国产精品九九九| 久久久在线观看| 2019av中文字幕| 懂色av中文一区二区三区天美| 国产精品亚洲综合天堂夜夜| 中文字幕综合在线| 国产视频综合在线| 日韩免费看的电影电视剧大全| 欧美制服第一页| 人人澡人人澡人人看欧美| 色一情一乱一区二区| 日韩精品免费在线视频观看| 欧美激情在线一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚州av一区二区| 国产精品久久久久久久久男| 久久青草精品视频免费观看| 日本高清视频精品| 欧美午夜激情在线| 在线丨暗呦小u女国产精品| 中文字幕在线精品| 97久久精品人人澡人人爽缅北| 午夜精品一区二区三区在线播放| 影音先锋欧美精品| 精品视频偷偷看在线观看| 国产精品视频一区国模私拍| 久久人人爽人人爽人人片av高清| 久久久久久噜噜噜久久久精品| 成人午夜两性视频| 久久久亚洲国产天美传媒修理工| 亚洲第一页中文字幕| 国产精品免费一区二区三区都可以| 日韩欧美在线看| 国产精品99久久久久久白浆小说| 国产欧美精品va在线观看| 国产福利精品在线| 亚洲自拍在线观看| 亚洲精品在线不卡| 国产精品一二三在线| 亚洲区免费影片| 日韩成人黄色av| 亚洲精品aⅴ中文字幕乱码| 亚洲一区二区三区毛片| www.欧美精品一二三区| 成人免费观看网址| 日韩小视频在线观看| 亚洲成人av片| 国产亚洲精品美女久久久| 日韩av在线网| 亚洲成**性毛茸茸| 久久天堂av综合合色| 久久久人成影片一区二区三区观看| 欧美大奶子在线| 久久五月天色综合| 国产亚洲成av人片在线观看桃| 欧美亚洲国产成人精品| 亚洲综合小说区| 午夜精品一区二区三区在线播放| 久久精品国产免费观看| 久久精彩免费视频| 欧美精品videossex88| 日本精品久久中文字幕佐佐木| 国产91精品网站| 91av在线播放视频| 欧美激情视频一区二区| www国产精品视频| 韩曰欧美视频免费观看| 日韩av免费在线观看| 国产精品国产三级国产专播精品人| 亚洲天堂av在线播放| 亚洲午夜未满十八勿入免费观看全集| 欧美电影免费观看网站| 欧美激情女人20p| 国产精品一区二区女厕厕| 国产一区二中文字幕在线看| 欧美有码在线视频| 国产欧美一区二区三区久久| 亚洲欧美国产一区二区三区| 国产精品入口免费视| 亚洲欧洲av一区二区| 亚洲欧美另类中文字幕| 日韩精品视频免费专区在线播放| 亚洲精品久久在线| 国产在线视频2019最新视频| 国产精品综合不卡av| 国产亚洲精品综合一区91| 日韩在线观看免费高清| 色yeye香蕉凹凸一区二区av| 欧美性极品xxxx娇小| 国语自产精品视频在线看一大j8| 成人观看高清在线观看免费| 欧美精品做受xxx性少妇| 日韩美女中文字幕| 日韩av免费看| 色偷偷888欧美精品久久久| 亚洲视频电影图片偷拍一区| 97在线视频免费观看| 久久婷婷国产麻豆91天堂| 亚洲男女自偷自拍图片另类| 中文在线不卡视频| 精品一区二区三区四区在线| 岛国av一区二区在线在线观看| 68精品久久久久久欧美| 欧美性jizz18性欧美| 日韩电视剧在线观看免费网站| 北条麻妃久久精品| 国产精品福利网| 亚洲大胆人体视频| 97福利一区二区| 成人黄色av免费在线观看| **欧美日韩vr在线| 欧美精品福利视频| 日韩亚洲精品视频| 国产精品日韩欧美综合| 在线观看亚洲区| 欧美激情奇米色| 亚洲乱亚洲乱妇无码| 91视频国产精品| 精品无人国产偷自产在线| 91在线免费观看网站| 欧美日韩国产精品一区二区不卡中文| 成人乱人伦精品视频在线观看| 亚洲欧美综合精品久久成人| 日本免费在线精品| 欧美视频精品一区| 亚洲精品小视频在线观看| 久久精品在线播放| 91成人国产在线观看| 国产精品视频地址| 国产成人avxxxxx在线看| 国产一区二区三区中文| 亚洲va国产va天堂va久久| 亚洲精品之草原avav久久| 久久久国产影院| 97精品久久久中文字幕免费| 亚洲欧美中文日韩v在线观看| 日韩a**中文字幕| 亚洲成人久久久| 高清亚洲成在人网站天堂| 色老头一区二区三区| 国产欧亚日韩视频| 一区二区欧美久久| 久久久av亚洲男天堂| 日韩精品视频在线| 深夜福利亚洲导航| 国产成人一区三区| 欧美性猛交xxxx偷拍洗澡| 亚洲男人av电影| 欧美性高潮床叫视频| 欧洲成人在线观看| 亚洲精品中文字幕女同| 欧美最猛性xxxxx亚洲精品| 亚洲福利在线看| 国产精品91久久久| 北条麻妃一区二区三区中文字幕|