最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#位運(yùn)算符的基本用法介紹

 更新時(shí)間:2022年08月27日 09:07:18   作者:Darren?Ji  
這篇文章介紹了C#位運(yùn)算符的基本用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

位運(yùn)算符包括:| 按位或 OR,& 按位與 AND,^ 按位異或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right Shift,等等。本篇體驗(yàn)位運(yùn)算符在C#中的應(yīng)用。

進(jìn)制轉(zhuǎn)換

因?yàn)槲贿\(yùn)算是在二進(jìn)制基礎(chǔ)上進(jìn)行的,所以進(jìn)制轉(zhuǎn)換是位運(yùn)算的前提。

十進(jìn)制轉(zhuǎn)換成二進(jìn)制

比如,把10進(jìn)制的數(shù)783轉(zhuǎn)換成二進(jìn)制,經(jīng)過(guò)下面10個(gè)步驟。

把余數(shù)從下到上拼接起來(lái),就是783的二進(jìn)制,即1100001111。

在C#中,如果是Int16類型,意味著有16位整型數(shù)。對(duì)于783來(lái)說(shuō),如果表示成Int16類型,不足16位的話,要在前面補(bǔ)0,即要在1100001111補(bǔ)6個(gè)0,完整的表示是:0000001100001111。同樣的道理,如果是Int32類型,意味著有32位整型數(shù)。

如何把-783轉(zhuǎn)換成Int16類型的二進(jìn)制呢?

→我們知道正數(shù)783表示成Int16類型的二進(jìn)制是:0000001100001111
→在每個(gè)位置上倒轉(zhuǎn),即如果是1就變成0,反之亦然,倒轉(zhuǎn)后變成:1111110011110000
→再加上1,變成:1111110011110001

二進(jìn)制轉(zhuǎn)換成十進(jìn)制

比如,把Int16類型的二進(jìn)制數(shù)0000000100010110轉(zhuǎn)換成十進(jìn)制,經(jīng)過(guò)下面的16個(gè)步驟。

從右向左,依次乘以2的n次方。

把所有的結(jié)果加起來(lái):
0 + 2 + 4 + 0 + 16 + 0 + 0 + 0 + 256 + 0 = 2 + 4 + 16 + 256 = 278
所以,0000000100010110的十進(jìn)制數(shù)是278。

如何把一個(gè)Int16類型的負(fù)二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制呢?

比如有這樣的一個(gè)二進(jìn)制數(shù):1111111111010011(Int16類型,第一位是數(shù)字1表示負(fù)數(shù),第一位是數(shù)字0表示正數(shù))
→每個(gè)位置上反轉(zhuǎn)變成:0000000000101100
→進(jìn)過(guò)計(jì)算,得到的十進(jìn)制數(shù)是:44
→再加1,得到:45
→再變成負(fù)數(shù),得到:-45

| 按位或操作符

假設(shè),十進(jìn)制數(shù)38和53進(jìn)行按位或計(jì)算。
→經(jīng)過(guò)計(jì)算,十進(jìn)制數(shù)38的二進(jìn)制表達(dá)是00100110,十進(jìn)制數(shù)538的二進(jìn)制表達(dá)是00110101。
→對(duì)| 按位或操作符來(lái)說(shuō),只要對(duì)應(yīng)的二個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果就為1。

→把得到的00110111轉(zhuǎn)換成十進(jìn)制就是:55

如果用C#表示就是:

byte result = 38 | 53;

& 按位與操作符

假設(shè),十進(jìn)制數(shù)76和231進(jìn)行按位與計(jì)算。
→經(jīng)過(guò)計(jì)算,十進(jìn)制數(shù)76的二進(jìn)制表達(dá)是01001100,十進(jìn)制數(shù)231的二進(jìn)制表達(dá)是11100111。
→對(duì)& 按位與操作符來(lái)說(shuō),只要對(duì)應(yīng)的二個(gè)二進(jìn)位有一個(gè)為0時(shí),結(jié)果就為0。

→把得到的 01000100轉(zhuǎn)換成十進(jìn)制就是:68

如果用C#表示就是:

byte result = 76 & 231;

^ 按位異或操作符

假設(shè),十進(jìn)制數(shù)138和43進(jìn)行按位與計(jì)算。
→經(jīng)過(guò)計(jì)算,十進(jìn)制數(shù)138的二進(jìn)制表達(dá)是10001010,十進(jìn)制數(shù)43的二進(jìn)制表達(dá)是00101011。
→對(duì)^ 按位異或操作符來(lái)說(shuō),當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1。

→把得到的10100001轉(zhuǎn)換成十進(jìn)制就是:161

如果用C#表示就是:

byte result = 138 ^ 43 ;

例子1:使用^ 按位異或交換2個(gè)數(shù)

int x = 4; 
int y = 6;
x ^= y;
y ^= x;
x ^= y;
Console.WriteLine(x); //6
Console.WriteLine(y); //4

以上過(guò)程是這樣的:

(1)x ^= y,相當(dāng)于x = x ^ y

x的二進(jìn)制是:00100
y的二進(jìn)制是:00110
x和y進(jìn)行異或,結(jié)果是:00010
x轉(zhuǎn)換成十進(jìn)制后,x為:2

(2)y ^= x,相當(dāng)于y = y ^ x

y的二進(jìn)制是:00110
x的二進(jìn)制是:00010
y和x進(jìn)行異或,結(jié)果是:00100
y轉(zhuǎn)換成十進(jìn)制后,y為:4

(3)x ^= y,相當(dāng)于x = x ^ y

x的二進(jìn)制是:00010
y的二進(jìn)制是:00100
x和y進(jìn)行異或,結(jié)果是:00110
x轉(zhuǎn)換成十進(jìn)制后,x為:6

例子2:使用^按位異或進(jìn)行加密運(yùn)算

string msg = "這是我要加密的string字符串";
string k = "mypassword";
for(int i = 0; i < msg.Length; i++)
{
    sb.Append((char)(msg[i] ^ k[i % k.Length]));
}
Console.WriteLine(sb.ToString());

~ 取反操作符

假設(shè),十進(jìn)制數(shù)52進(jìn)行取反計(jì)算。
→經(jīng)過(guò)計(jì)算,十進(jìn)制數(shù)52的二進(jìn)制表達(dá)是00110100
→對(duì)~ 取反操作符來(lái)說(shuō),對(duì)應(yīng)的二進(jìn)位數(shù)按位求反,0變成1,1變成0

→把得到的11001011轉(zhuǎn)換成十進(jìn)制就是:203

如果用C#表示就是:

byte result = ~52;

x << n 左移運(yùn)算符

每位向左移動(dòng)n位,右邊空缺的位置補(bǔ)0。
假設(shè),十進(jìn)制數(shù)154進(jìn)行左移。

如果用C#表示就是:

byte b1 = 154;
byte b2 = (byte)b1 << 1;
Console.Writeline(b2);//結(jié)果是52,二進(jìn)制是00110100

x >> n 右移運(yùn)算符

每位向右移動(dòng)n位,左邊空缺的位置補(bǔ)0。
假設(shè),十進(jìn)制數(shù)155進(jìn)行右移。

如果用C#表示就是:

byte b1 = 155;
byte b2 = (byte)(b1 >> 1);
Console.WriteLine(b2); // 結(jié)果: 77

總結(jié):
| 按位或操作符來(lái)說(shuō),只要對(duì)應(yīng)的二個(gè)二進(jìn)位有一個(gè)為1時(shí),結(jié)果就為1
& 按位與操作符來(lái)說(shuō),只要對(duì)應(yīng)的二個(gè)二進(jìn)位有一個(gè)為0時(shí),結(jié)果就為0
^ 按位異或操作符來(lái)說(shuō),當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí),結(jié)果為1
~ 取反操作符來(lái)說(shuō),對(duì)應(yīng)的二進(jìn)位數(shù)按位求反,0變成1,1變成0
x << n 左移運(yùn)算符,每位向左移動(dòng)n位,右邊空缺的位置補(bǔ)0
x >> n 右移運(yùn)算符,每位向右移動(dòng)n位,左邊空缺的位置補(bǔ)0

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • c#實(shí)現(xiàn)sqlserver事務(wù)處理示例

    c#實(shí)現(xiàn)sqlserver事務(wù)處理示例

    這篇文章主要介紹了c#實(shí)現(xiàn)sqlserver事務(wù)處理的示例,大家參考使用吧
    2014-01-01
  • 基于C#實(shí)現(xiàn)獲取Windows所有窗口句柄

    基于C#實(shí)現(xiàn)獲取Windows所有窗口句柄

    在做錄屏或截屏操作時(shí),需要獲取當(dāng)前正在運(yùn)行中的桌面程序句柄,所以這篇文章主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)獲取Windows所有窗口句柄,需要的可以參考下
    2023-12-12
  • C# 字符串處理小工具

    C# 字符串處理小工具

    本文主要介紹C#字符串處理小工具,實(shí)現(xiàn)功能包括:轉(zhuǎn)換為大寫(xiě);轉(zhuǎn)換為小寫(xiě);反轉(zhuǎn)字符串;匹配某字符串出現(xiàn)次數(shù);正則匹配;base64加密;base64解密;ROT13加密解密;MD5 32位加密。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • C#中使用UDP通信的示例

    C#中使用UDP通信的示例

    這篇文章主要介紹了C#中使用UDP通信的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • C#+EmguCV使用攝像頭讀取、保存視頻

    C#+EmguCV使用攝像頭讀取、保存視頻

    這篇文章主要為大家詳細(xì)介紹了C#+EmguCV使用攝像頭讀取、保存視頻,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 淺談二叉查找樹(shù)的集合總結(jié)分析

    淺談二叉查找樹(shù)的集合總結(jié)分析

    本篇文章是談二叉查找樹(shù)進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友參考下
    2013-05-05
  • C#實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳下載的方法

    C#實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳下載的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)文件斷點(diǎn)續(xù)傳下載的方法,涉及網(wǎng)絡(luò)文件操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • C#對(duì)接阿里云IOT平臺(tái)進(jìn)行設(shè)備開(kāi)發(fā)

    C#對(duì)接阿里云IOT平臺(tái)進(jìn)行設(shè)備開(kāi)發(fā)

    這篇文章介紹了C#對(duì)接阿里云IOT平臺(tái)進(jìn)行設(shè)備開(kāi)發(fā),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#隱藏主窗口的方法小結(jié)

    C#隱藏主窗口的方法小結(jié)

    這篇文章主要介紹了C#隱藏主窗口的方法,列舉了C#隱藏窗口的三種常用方法,涉及C#窗體操作的常用技巧,需要的朋友可以參考下
    2016-03-03
  • C# 如何調(diào)用SAP RFC

    C# 如何調(diào)用SAP RFC

    這篇文章主要介紹了C# 如何調(diào)用SAP RFC,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-12-12

最新評(píng)論

图们市| 宜良县| 手机| 汝南县| 宝鸡市| 武安市| 从化市| 松潘县| 浏阳市| 高清| 名山县| 新昌县| 凤翔县| 井冈山市| 威信县| 金山区| 靖西县| 凌海市| 万年县| 嘉义市| 平乐县| 乡宁县| 西平县| 绿春县| 晋州市| 杭锦后旗| 休宁县| 遂昌县| 上虞市| 阜阳市| 杭锦后旗| 得荣县| 无棣县| 宁都县| 卫辉市| 通辽市| 侯马市| 丰原市| 昭苏县| 青川县| 乳山市|