C#位運(yùn)算以及實(shí)例計(jì)算詳解
前言:
平時(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
三、位邏輯或運(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
四、位邏輯異或運(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
五、位左移運(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
六、位右移運(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
總結(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ì)我們的支持。
上一篇:Unity調(diào)用手機(jī)攝像機(jī)識(shí)別二維碼
欄 目:C#教程
本文標(biāo)題:C#位運(yùn)算以及實(shí)例計(jì)算詳解
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/4727.html
您可能感興趣的文章
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10C#編程自學(xué)之運(yùn)算符和表達(dá)式
- 01-10C#讀取Excel的三種方式以及比較分析
- 01-10輕松學(xué)習(xí)C#的運(yùn)算符
- 01-10理解C#中參數(shù)的值和引用以及傳遞結(jié)構(gòu)和類引用的區(qū)別
- 01-10理解C#編程中的靜態(tài)類和靜態(tài)成員以及密封類
- 01-10詳解C#中的接口屬性以及屬性訪問器的訪問限制
- 01-10詳解C#編程中異常的創(chuàng)建和引發(fā)以及異常處理
- 01-10詳解C#中的泛型以及編程中使用泛型的優(yōu)點(diǎn)
- 01-10c#使用win32api實(shí)現(xiàn)獲取光標(biāo)位置


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實(shí)現(xiàn)txt定位指定行完整實(shí)例
- 01-10WinForm實(shí)現(xiàn)仿視頻 器左下角滾動(dòng)新
- 01-10C#停止線程的方法
- 01-10C#實(shí)現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實(shí)現(xiàn)讀取注冊(cè)表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?