C++ 中計算 XOR 與 x 大於 x 的較小值的個數


給定一個整數,例如 x,任務是計算小於 x 的較小數字,這些數字與 x 進行 XOR 運算後得到的結果大於 x。

XOR 運算的真值表如下所示

ABA XOR B
000
101
011
110

輸入 − int x = 11

輸出 − XOR 與 x 大於 x 的較小值的個數為 - 4

解釋

給定 x 為 11,這意味著我們需要找到 x 與小於 x 的數字的 XOR 結果。因此,這些數字為 1 XOR 11 < 11(FALSE),2 XOR 11 < 11(FALSE),3 XOR 11 < 11(FALSE),4 XOR 11 > 11(TRUE),5 XOR 11 > 11(TRUE),6 XOR 11 > 11(TRUE),7 XOR 11> 11(TRUE),8 XOR 11< 11(FALSE),9 XOR 11 < 11(FALSE),10 XOR 11 < 11(FALSE)。

輸入-: int x = 12

輸出 − XOR 與 x 大於 x 的較小值的個數為 - 11

解釋

給定 x 為 12,這意味著我們需要找到 x 與小於 x 的數字的 XOR 結果。因此,這些數字為 1 XOR 12 > 12(TRUE),2 XOR 12 > 12(TRUE),3 XOR 12 > 12(TRUE),4 XOR 12 < 12(FALSE),5 XOR 12 < 12(FALSE),6 XOR 12 < 12(FALSE),7 XOR 12< 12(FALSE),8 XOR 12< 12(FALSE),9 XOR 12 < 12(FALSE),10 XOR 12 < 12(FALSE),11 XOR 12 < 12(FALSE)。

下面程式中使用的思路如下

  • 輸入一個整數元素並將其儲存在一個名為 x 的變數中。

  • 將 num 的值傳遞給函式以進行進一步處理

  • 建立一個名為 count 的臨時變數來儲存結果,並建立一個名為 num 的變數並將其設定為 1。

  • 啟動迴圈 WHILE 直到 x != 0

  • 在迴圈內,檢查 IF x%2 == 0,然後將 count 設定為 count + num

  • 將 num 設定為 num * 2,將 x 設定為 x / 2

  • 返回 count

  • 列印結果

示例

 線上演示

#include
using namespace std;
int XOR_smaller(int x){
   int count = 0;
   int num = 1;
   while (x != 0){
      if (x%2 == 0){
         count = count + num;
      }
      num = num*2;
      x = x/2;
   }
   return count;
}
int main(){
   int x = 20;
   cout<<"Count of smaller values whose XOR with x is greater than x are: "<<XOR_smaller(x);
   return 0;
}

輸出

如果我們執行以上程式碼,它將生成以下輸出:

Count of smaller values whose XOR with x is greater than x are: 11

更新於: 2020-08-31

127 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.