<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
位運運算元包括:| 按位元或 OR,& 按位元與 AND,^ 按位元互斥或 XOR,~ 取反 NOT,<< 左移 Left Shift,>> 右移 Right Shift,等等。本篇體驗位運運算元在C#中的應用。
因為位運算是在二進位制基礎上進行的,所以進位制轉換是位運算的前提。
比如,把10進位制的數783轉換成二進位制,經過下面10個步驟。
把餘數從下到上拼接起來,就是783的二進位制,即1100001111。
在C#中,如果是Int16型別,意味著有16位元整型數。對於783來說,如果表示成Int16型別,不足16位元的話,要在前面補0,即要在1100001111補6個0,完整的表示是:0000001100001111。同樣的道理,如果是Int32型別,意味著有32位元整型數。
→我們知道正數783表示成Int16型別的二進位制是:0000001100001111
→在每個位置上倒轉,即如果是1就變成0,反之亦然,倒轉後變成:1111110011110000
→再加上1,變成:1111110011110001
比如,把Int16型別的二進位制數0000000100010110轉換成十進位制,經過下面的16個步驟。
從右向左,依次乘以2的n次方。
把所有的結果加起來:
0 + 2 + 4 + 0 + 16 + 0 + 0 + 0 + 256 + 0 = 2 + 4 + 16 + 256 = 278
所以,0000000100010110的十進位制數是278。
比如有這樣的一個二進位制數:1111111111010011(Int16型別,第一位是數位1表示負數,第一位是數位0表示正數)
→每個位置上反轉變成:0000000000101100
→進過計算,得到的十進位制數是:44
→再加1,得到:45
→再變成負數,得到:-45
假設,十進位制數38和53進行按位元或計算。
→經過計算,十進位制數38的二進位制表達是00100110,十進位制數538的二進位制表達是00110101。
→對| 按位元或操作符來說,只要對應的二個二進位有一個為1時,結果就為1。
→把得到的00110111轉換成十進位制就是:55
如果用C#表示就是:
byte result = 38 | 53;
假設,十進位制數76和231進行按位元與計算。
→經過計算,十進位制數76的二進位制表達是01001100,十進位制數231的二進位制表達是11100111。
→對& 按位元與操作符來說,只要對應的二個二進位有一個為0時,結果就為0。
→把得到的 01000100轉換成十進位制就是:68
如果用C#表示就是:
byte result = 76 & 231;
假設,十進位制數138和43進行按位元與計算。
→經過計算,十進位制數138的二進位制表達是10001010,十進位制數43的二進位制表達是00101011。
→對^ 按位元互斥或操作符來說,當兩對應的二進位相異時,結果為1。
→把得到的10100001轉換成十進位制就是:161
如果用C#表示就是:
byte result = 138 ^ 43 ;
int x = 4; int y = 6; x ^= y; y ^= x; x ^= y; Console.WriteLine(x); //6 Console.WriteLine(y); //4
以上過程是這樣的:
x的二進位制是:00100
y的二進位制是:00110
x和y進行互斥或,結果是:00010
x轉換成十進位制後,x為:2
y的二進位制是:00110
x的二進位制是:00010
y和x進行互斥或,結果是:00100
y轉換成十進位制後,y為:4
x的二進位制是:00010
y的二進位制是:00100
x和y進行互斥或,結果是:00110
x轉換成十進位制後,x為:6
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進行取反計算。
→經過計算,十進位制數52的二進位制表達是00110100
→對~ 取反操作符來說,對應的二進位數按位元求反,0變成1,1變成0
→把得到的11001011轉換成十進位制就是:203
如果用C#表示就是:
byte result = ~52;
每位向左移動n位,右邊空缺的位置補0。
假設,十進位制數154進行左移。
如果用C#表示就是:
byte b1 = 154; byte b2 = (byte)b1 << 1; Console.Writeline(b2);//結果是52,二進位制是00110100
每位向右移動n位,左邊空缺的位置補0。
假設,十進位制數155進行右移。
如果用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
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對it145.com的支援。如果你想了解更多相關內容請檢視下面相關連結
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45