C#位運(yùn)算以及實(shí)例計(jì)算詳解

前言:

創(chuàng)新互聯(lián)公司從2013年開始,先為鐵門關(guān)等服務(wù)建站,鐵門關(guān)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為鐵門關(guān)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

平時(shí)在實(shí)際工作中很少用到這個(gè),雖然都是一些比較基礎(chǔ)的東西,但一旦遇到了,又不知所云。剛好最近接觸了一些相關(guān)這方面的項(xiàng)目,所以也算是對(duì) 這些內(nèi)容重新溫習(xí)實(shí)踐了一遍。所以這篇不僅作為個(gè)人備忘,也分享給各位重溫一遍。

要學(xué)會(huì)位運(yùn)算,首先要清楚什么是位運(yùn)算?程序中的所有內(nèi)容在計(jì)算機(jī)內(nèi)存中都是以二進(jìn)制的形式儲(chǔ)存的(即:0或1),位運(yùn)算就是直接對(duì)在內(nèi)存中的二進(jìn)制數(shù)的每位進(jìn)行運(yùn)算操作。

了解:

在C#中可以對(duì)整型運(yùn)算對(duì)象按位進(jìn)行邏輯運(yùn)算。按位進(jìn)行邏輯運(yùn)算的意義是:依次取被運(yùn)算對(duì)象的每個(gè)位,進(jìn)行邏輯運(yùn)算,每個(gè)位的邏輯運(yùn)算結(jié)果是結(jié)果值的每個(gè)位

運(yùn)算符號(hào)
意義
運(yùn)算對(duì)象類型
運(yùn)算結(jié)果類型
對(duì)象數(shù)
實(shí)例
~
位邏輯非運(yùn)算
整型,字符型
整型
1
~a
&
位邏輯與運(yùn)算
2
a & b
|
位邏輯或運(yùn)算
2
a | b
^
位邏輯異或運(yùn)算
2
a ^ b
<< 
位左移運(yùn)算
2
a<<4
>> 
位右移運(yùn)算
2
a>>2

開始:

一、位邏輯非運(yùn)算

位邏輯非運(yùn)算是單目的,只有一個(gè)運(yùn)算對(duì)象。位邏輯非運(yùn)算按位對(duì)運(yùn)算對(duì)象的值進(jìn)行非運(yùn)算。符號(hào)為:~

即:如果某一位等于0,就將其轉(zhuǎn)變?yōu)?;如果某一位等于1,就將其轉(zhuǎn)變?yōu)?

對(duì)二進(jìn)制的10010001進(jìn)行位邏輯非運(yùn)算,結(jié)果等于01101110

用十進(jìn)制:~145等于110

二、位邏輯與運(yùn)算

位邏輯與運(yùn)算將兩個(gè)運(yùn)算對(duì)象按位進(jìn)行與運(yùn)算。符號(hào)為&。

運(yùn)算規(guī)則為:1&1=1;0&1=0;0&0=0

#region 位運(yùn)算與運(yùn)算
   int a = 11; //11的二進(jìn)制是0000 1011
   int b = 13; //13的二進(jìn)制是0000 1101
   Console.WriteLine(a & b); //11 & 13的結(jié)果就是0000 1001 即結(jié)果是9
   Console.Read();

   #endregion

C#位運(yùn)算以及實(shí)例計(jì)算詳解

三、位邏輯或運(yùn)算

位邏輯或運(yùn)算將兩個(gè)運(yùn)算對(duì)象按位進(jìn)行或運(yùn)算。符號(hào)為 |

運(yùn)算規(guī)則為:1|1=1;1|0=1;0|0=0

      #region 位運(yùn)算或運(yùn)算
      int a = 11; //11的二進(jìn)制是0000 1011
      int b = 13; //13的二進(jìn)制是0000 1101
      Console.WriteLine(a | b); //11 | 13的結(jié)果就是0000 1111 即結(jié)果是15
      Console.Read();
      #endregion

C#位運(yùn)算以及實(shí)例計(jì)算詳解

四、位邏輯異或運(yùn)算

位邏輯異或運(yùn)算將兩個(gè)運(yùn)算對(duì)象按位進(jìn)行異或運(yùn)算。符號(hào)為^

運(yùn)算規(guī)則:1^1=0;1^0=1;0^0=0 (相同得0,相異得1)

      #region 位運(yùn)算異或運(yùn)算
      int a = 11; //11的二進(jìn)制是0000 1011
      int b = 13; //13的二進(jìn)制是0000 1101
      Console.WriteLine(a ^ b); //11 ^ 13的結(jié)果就是0000 0110 即結(jié)果是6
      Console.Read();
      #endregion

C#位運(yùn)算以及實(shí)例計(jì)算詳解

五、位左移運(yùn)算

位左移運(yùn)算將整個(gè)數(shù)按位左移若干位,左移后空出的部分0。符號(hào)為:<<

運(yùn)算規(guī)則:a<<1 =a乘以2的1次方;a<<2 =a乘以2的2次方;a<<3 =a乘以2的3次方

      #region 位左移運(yùn)算
      int a = 11; //11的二進(jìn)制是0000 1011
      Console.WriteLine(a << 2); //0000 1011 左位移2位的結(jié)果就是0010 1100 即結(jié)果是44 (11*2^2=44)
      Console.Read();
      #endregion

C#位運(yùn)算以及實(shí)例計(jì)算詳解

六、位右移運(yùn)算

位右移運(yùn)算將整個(gè)數(shù)按位右移若干位,右移后空出的部分填0。符號(hào)為:>>

運(yùn)算規(guī)則:a>>1 = a整除2的1次方;a>>2 = a整除2的2次方;a>>3 = a整除2的3次方

      #region 位右移運(yùn)算
      int a = 11; //11的二進(jìn)制是0000 1011
      Console.WriteLine(a >> 2); //0000 1011 右位移2位的結(jié)果就是0000 0010 即結(jié)果是2 (11÷(2^2)=2)
      Console.Read();
      #endregion

C#位運(yùn)算以及實(shí)例計(jì)算詳解

總結(jié):

1.位運(yùn)算,雖然平時(shí)很少用到位運(yùn)算符,但是在某些時(shí)候,這些確實(shí)能夠給我們提供很好的解決方案。

2.在實(shí)際應(yīng)用中,不斷的重溫基礎(chǔ)的知識(shí),加強(qiáng)鞏固。畢竟很多時(shí)候,只有將基礎(chǔ)的知識(shí)打牢固,后續(xù)才能更好的功能拓展和衍生

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。

文章名稱:C#位運(yùn)算以及實(shí)例計(jì)算詳解
當(dāng)前鏈接:http://bm7419.com/article6/jcejog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站營銷關(guān)鍵詞優(yōu)化、微信小程序品牌網(wǎng)站制作、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)