91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#位運算符怎么使用

發布時間:2022-08-27 14:35:04 來源:億速云 閱讀:136 作者:iii 欄目:開發技術

今天小編給大家分享一下C#位運算符怎么使用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

位運算符包括:| 按位或 OR,& 按位與 AND,^ 按位異或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right Shift,等等。

進制轉換

因為位運算是在二進制基礎上進行的,所以進制轉換是位運算的前提。

十進制轉換成二進制

比如,把10進制的數783轉換成二進制,經過下面10個步驟。

C#位運算符怎么使用

把余數從下到上拼接起來,就是783的二進制,即1100001111。

在C#中,如果是Int16類型,意味著有16位整型數。對于783來說,如果表示成Int16類型,不足16位的話,要在前面補0,即要在1100001111補6個0,完整的表示是:0000001100001111。同樣的道理,如果是Int32類型,意味著有32位整型數。

如何把-783轉換成Int16類型的二進制呢?

&rarr;我們知道正數783表示成Int16類型的二進制是:0000001100001111
&rarr;在每個位置上倒轉,即如果是1就變成0,反之亦然,倒轉后變成:1111110011110000
&rarr;再加上1,變成:1111110011110001

二進制轉換成十進制

比如,把Int16類型的二進制數0000000100010110轉換成十進制,經過下面的16個步驟。

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

C#位運算符怎么使用

把所有的結果加起來:
0 + 2 + 4 + 0 + 16 + 0 + 0 + 0 + 256 + 0 = 2 + 4 + 16 + 256 = 278
所以,0000000100010110的十進制數是278。

如何把一個Int16類型的負二進制數轉換成十進制呢?

比如有這樣的一個二進制數:1111111111010011(Int16類型,第一位是數字1表示負數,第一位是數字0表示正數)
&rarr;每個位置上反轉變成:0000000000101100
&rarr;進過計算,得到的十進制數是:44
&rarr;再加1,得到:45
&rarr;再變成負數,得到:-45

| 按位或操作符

假設,十進制數38和53進行按位或計算。
&rarr;經過計算,十進制數38的二進制表達是00100110,十進制數538的二進制表達是00110101。
&rarr;對| 按位或操作符來說,只要對應的二個二進位有一個為1時,結果就為1。

C#位運算符怎么使用

&rarr;把得到的00110111轉換成十進制就是:55

如果用C#表示就是:

byte result = 38 | 53;

& 按位與操作符

假設,十進制數76和231進行按位與計算。
&rarr;經過計算,十進制數76的二進制表達是01001100,十進制數231的二進制表達是11100111。
&rarr;對& 按位與操作符來說,只要對應的二個二進位有一個為0時,結果就為0。

C#位運算符怎么使用

&rarr;把得到的 01000100轉換成十進制就是:68

如果用C#表示就是:

byte result = 76 & 231;

^ 按位異或操作符

假設,十進制數138和43進行按位與計算。
&rarr;經過計算,十進制數138的二進制表達是10001010,十進制數43的二進制表達是00101011。
&rarr;對^ 按位異或操作符來說,當兩對應的二進位相異時,結果為1。

C#位運算符怎么使用

&rarr;把得到的10100001轉換成十進制就是:161

如果用C#表示就是:

byte result = 138 ^ 43 ;

例子1:使用^ 按位異或交換2個數

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

以上過程是這樣的:

(1)x ^= y,相當于x = x ^ y

x的二進制是:00100
y的二進制是:00110
x和y進行異或,結果是:00010
x轉換成十進制后,x為:2

(2)y ^= x,相當于y = y ^ x

y的二進制是:00110
x的二進制是:00010
y和x進行異或,結果是:00100
y轉換成十進制后,y為:4

(3)x ^= y,相當于x = x ^ y

x的二進制是:00010
y的二進制是:00100
x和y進行異或,結果是:00110
x轉換成十進制后,x為:6

例子2:使用^按位異或進行加密運算

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());

~ 取反操作符

假設,十進制數52進行取反計算。
&rarr;經過計算,十進制數52的二進制表達是00110100
&rarr;對~ 取反操作符來說,對應的二進位數按位求反,0變成1,1變成0

C#位運算符怎么使用

&rarr;把得到的11001011轉換成十進制就是:203

如果用C#表示就是:

byte result = ~52;

x << n 左移運算符

每位向左移動n位,右邊空缺的位置補0。
假設,十進制數154進行左移。

C#位運算符怎么使用

如果用C#表示就是:

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

x >> n 右移運算符

每位向右移動n位,左邊空缺的位置補0。
假設,十進制數155進行右移。

C#位運算符怎么使用

如果用C#表示就是:

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

總結:
| 按位或操作符來說,只要對應的二個二進位有一個為1時,結果就為1
& 按位與操作符來說,只要對應的二個二進位有一個為0時,結果就為0
^ 按位異或操作符來說,當兩對應的二進位相異時,結果為1
~ 取反操作符來說,對應的二進位數按位求反,0變成1,1變成0
x << n 左移運算符,每位向左移動n位,右邊空缺的位置補0
x >> n 右移運算符,每位向右移動n位,左邊空缺的位置補0

以上就是“C#位運算符怎么使用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汝南县| 洛阳市| 鹿邑县| 巩留县| 广汉市| 祁阳县| 左贡县| 丹寨县| 双鸭山市| 集贤县| 华宁县| 界首市| 北辰区| 宁陕县| 都匀市| 西乌珠穆沁旗| 米脂县| 商城县| 长阳| 辽阳市| 竹山县| 汕头市| 宝山区| 浮梁县| 花垣县| 盐津县| 屯门区| 葵青区| 韩城市| 武功县| 慈利县| 荔浦县| 昌乐县| 曲靖市| 上虞市| 泗水县| 安福县| 平湖市| 松潘县| 龙泉市| 朔州市|