<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      逍遙自在學C語言 | 位運算符^的高級用法

      前言

      在上一篇文章中,我們介紹了|運算符的高級用法,本篇文章,我們將介紹^ 運算符的一些高級用法。

      一、人物簡介

      • 第一位閃亮登場,有請今后會一直教我們C語言的老師 —— 自在。

      • 第二位上場的是和我們一起學習的小白程序猿 —— 逍遙。

      二、交換兩個變量的值

      #include <stdio.h>
      
      int main() 
      {
          int a = 10;
          int b = 20;
          printf("交換前: a = %d, b = %d\n", a, b);
          a ^= b;
          b ^= a;
          a ^= b;
          printf("交換后: a = %d, b = %d\n", a, b);
          return 0;
      }
      

      • 兩個相同的數,異或結果為0
      • 第一次的a ^= b 等價于 a = a ^ b
      • b ^= a 此時等價于 b = b ^ a ^ b ,結果為 b = a
      • 第二次的a ^= b 此時等價于 a = a ^ b ^ a,結果為 a = b
      • 這樣ab的數值就進行了交換

      三、判斷兩個變量的符號是否相同

      #include <stdio.h>
      
      int main() 
      {
          int x = 10;
          int y = -20;
          if ((x ^ y) < 0) 
          {
              printf("x 和 y符號相反\n");
          }
          else 
          {
              printf("x 和 y符號相同\n");
          }
          return 0;
      }
      

      • 有符號數的最高位是符號位,0表示正數,1表示負數
      • 如果兩個有符號數的最高位相同,則最高位異或結果為0,反之則為1

      四、將一個數的某些位翻轉

      #include <stdio.h>
      int main() 
      {
          unsigned int num = 12; // 0b1100
          unsigned int mask = 7; // 0b0111
          unsigned int result = num ^ mask; // 0b1011 
          printf("原始數據: %u\n", num);
          printf("掩碼: %u\n", mask);
          printf("位翻轉后: %u\n", result);
          return 0;
      }
      

      • num的二進制表示為1100,mask的二進制表示為0111
      • 從低位往高位數,num和mask第三位相同,都為1,所以這一位的異或結果為0
      • 最終的結果為1011

      五、求兩個數的平均數

      #include <stdio.h>
      int main()
      {
        int a = 15;	// 0b1111
        int b = 5;	// 0b0101
        int avg = (a&b) + ((a^b)>>1);
        printf(" %d 和 %d 的平均數為 %d\n", a, b, avg);
        return 0;
      }
      

      • a的二進制表示為1111,b的二進制表示為0101
      • 按位與(&)運算后得到兩者相同的部分0101
      • 按位異或(^)運算后得到兩者不同的部分1010
      • (a ^ b)>> 1,等價于(a ^ b)/2,也就是將兩者不同的部分除以2
      • 相同的部分,加上二分之一不同的部分,就得到兩個數的平均數

      小結

      通過這篇文章,我們學會了用位運算符^的4種高級用法

      1、交換兩個變量的值

      2、判斷兩個變量的符號是否相同

      3、將一個數的某些位翻轉

      4、求兩個數的平均數

      在下一篇文章中,我們將介紹位運算符~的一些高級用法。

      ??歡迎各位 ??點贊 ?收藏 ??評論,如有錯誤請留言指正,非常感謝!

      posted @ 2023-04-12 11:19  知微之見  閱讀(1144)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 一本大道卡一卡二卡三乱码全集资源| 兔费看少妇性l交大片免费| 成人午夜视频在线| 亚洲av成人无网码天堂| 久久综合伊人77777| 亚洲天堂激情av在线| 亚洲精品久久久久国色天香| 人妻中文字幕一区二区三| 天堂V亚洲国产V第一次| 亚洲色大成网站WWW永久麻豆| 亚洲精品国产精品国自产| 亚洲免费人成在线视频观看| 国产卡一卡二卡三免费入口| 日韩精品三区二区三区| 国产不卡一区二区精品| 日韩欧美在线综合网另类| 亚洲综合一区二区精品导航| 久久这里都是精品二| 欧美亚洲综合成人A∨在线| 亚洲第一无码专区天堂| 国产成人高清亚洲综合| 人妻少妇久久久久久97人妻| 久99久热免费视频播放| 国产精品色内内在线播放| 国产一区二区日韩在线| 毛片无码一区二区三区| 日本福利一区二区精品| 精品午夜福利短视频一区| 亚洲天堂男人的天堂在线| 亚洲国产激情一区二区三区| 国产乱弄免费视频观看| 99riav精品免费视频观看| 精品精品亚洲高清a毛片| 超碰成人人人做人人爽| 亚洲精品一区二区麻豆| 国产AV影片麻豆精品传媒| 亚洲午夜福利网在线观看| 国产成人免费高清激情视频| 会宁县| 亚洲av乱码久久亚洲精品| 野外做受三级视频|