计算在C ++中与n的XOR值更大的较小数字

我们得到一个整数,比方说num,任务是计算小于num的较小数字,其num与XOR的值将大于XOR值。

异或运算的真值表如下

一种异或
000
101
011
110

输入-int num = 11

输出-与n的XOR值较大的较小数字的计数为-4

说明-

num为11,这意味着我们需要找到num的XOR,且数字小于num。所以数字是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 num = 12

输出-与n的XOR值较大的较小数字的计数为-3

说明-

num为12,这意味着我们需要找到num的XOR,且数字小于num。所以数字是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(假)。

以下程序中使用的方法如下

  • 输入一个整数元素并将其存储在名为num的变量中。

  • 将num的值传递给函数以进行进一步处理

  • 创建一个临时变量计数以存储结果。

  • 启动循环,直到num> 0

  • 在循环内部,检查IF num&1 == TRUE,然后将计数设置为count + pow(2,temp)

  • 将temp的值增加1

  • 并将num设置为num >> = 1

  • 返回计数

  • 打印结果

示例

#include
using namespace std;
//计算与n的XOR值更大的较小数字
int XOR_greater(int n){
   int temp = 0;
   int count = 0;
   while (n > 0){
      if ((n&1) == 0){
         count += pow(2, temp);
      }
      temp++;
      n >>= 1;
   }
   return count;
}
int main(){
   int n = 20;
   cout<<"Count of smaller numbers whose XOR with n produces greater value are: "<<XOR_greater(n) << endl;
   return 0;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Count of smaller numbers whose XOR with n produces greater value are: 11