成人黄色在线网站 I 国产aa免费 I 中文字幕免费高清 I 国产三级影院 I 日韩欧美三级在线观看 I 久久久国产精品麻豆a片 I 欧美与黑人午夜性猛交久久久 I 91国产精品视频在线 I 国产美女狂喷水潮在线播放 I 黄页免费网站在线观看 I 欧美日韩激情视频 I 午夜理论无码片在线观看免费 I 深夜爽爽动态图无遮无挡 I 国精产品一区一区三区有限公司杨 I 天天操天天舔天天爽 I 免费看日本黄色片 I 成人va在线 I 日韩中文字幕在线观看 I 婷婷综合网 I 97视频免费观察看 I 色月丁香 I 日韩视频一二三 I 男女黄色毛片 I 美女疯狂连续喷潮视频 I 亚洲日本va一区二区sa I 欧美日韩视频区 I 毛片网在线 I 欧美一本在线 I 少妇一级淫片免费放香蕉 I avav在线看 I 久久精品亚洲中文字幕无码网站 I 天堂av在线中文在线新版 I 电影一区 电影二区 I 色av吧 中文字幕 I 国产精品伊人色

歡迎來到培訓無憂網!

全國切換

咨詢熱線 400-001-5729

位置:培訓無憂網 > 新聞資訊 > 電腦/IT > c語言 >  學習C語言了解下異或運算特性及應用

學習C語言了解下異或運算特性及應用

來源:達內教育 發布人:星星

2022-01-11 14:43:19|已瀏覽:177次

C語言異或運算

      1、一個數和自己做異或的結果是0。如果需要一個常數0,x86平臺的編譯器可能會生成這樣的指令:xorl %eax, %eax。不管eax寄存器里的值原來是多少,做異或運算都能得到0,這條指令比同樣效果的;movl $0, %eax指令快,直接對寄存器做位運算比生成一個立即數再傳送到寄存器要快一些。

      2、從異或的真值表中可以看出,和0做異或保持原值不變,和1做異或得到原值的相反值。可以利用這個特性配合掩碼實現某些位的翻轉,例如:1.unsigned int a, b, mask = 1U << 6; 2.a = 0x12345678; 3.b = a ^ mask; /* flip the 6th bit */ 
      3、如果a1 ^ a2 ^ a3 ^ … ^ an的結果是1,則表示a1、a2、a3…an之中1的個數為奇數個,否則為偶數個。這條性質可用于奇偶校驗(Parity Check),比如在串口通信過程中,每個字節的數據都計算一個校驗位,數據和校驗位一起發送出去,這樣接收方可以根據校驗位粗略地判斷接收到的數據是否有誤。
      4、 x ^ x ^ y == y,因為x ^ x == 0,0 ^ y == y。這個性質有什么用呢?我們來看這樣一個問題:交換兩個變量的值,不得借助額外的存儲空間,所以不能采用temp = a; a = b; b = temp;的辦法。利用位運算可以這樣做交換:1.a = a ^ b; 2.b = b ^ a; 3.a = a ^ b; 
      分析一下這個過程。為了避免混淆,把a和b的初值分別記為a0和b0。第一行,a = a0 ^ b0;第二行,把a的新值代入,得到b = b0 ^ a0 ^ b0,等號右邊的b0相當于上面公式中的x,a0相當于y,所以結果為a0;第三行,把a和b的新值代入,得到a = a0 ^ b0 ^ a0,結果為b0。注意這個過程不能把同一個變量跟自己交換,而利用中間變量temp則可以交換。
       0異或0=0,1異或0=1,0異或1=1,1異或1=0(同為0,異為1。程序中有三種演算子:XOR、xor、 ^。口訣:相同取0,相異取1。(二進制)

       C語言中若需要交換兩個變量的值,除了通常使用的借用中間變量進行交換外,還可以利用異或,僅使用兩個變量進行交換,如:a=a^b;b=a^b;a=a^b;這樣就完成了a與b的交換。

        本文由培訓無憂網達內教育專屬課程顧問老師整理發布,更多C語言課程信息可關注培訓無憂網C語言培訓頻道或添加老師微信:15033336050

      注:尊重原創文章,轉載請注明出處和鏈接 http://www.hebeijilong.cn/news-id-14645.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注c語言頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問老師會一對一幫助你規劃更適合你的專業課程!
  • 姓名:

  • 手機:

  • 地區:

  • 想學什么:

  • 培訓無憂網
免 費 申 請 試 聽
提交申請,《培訓無憂網》課程顧問老師會一對一幫助你規劃更適合你的專業課程!