我们给定一个整数,即x,任务是计算小于x的较小数字,其与x的XOR值将大于XOR值。
异或运算的真值表如下
| 一种 | 乙 | 异或 |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 1 | 0 |
输入-int x = 11
输出-与x的XOR大于x的较小值的计数为-4
说明-
给定x为11,这意味着我们需要找到x小于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
输出-与x的XOR大于x的较小值的计数为-11
说明-
x的值为12,这意味着我们需要找到x小于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(假)。
输入一个整数元素并将其存储在名为x的变量中。
将num的值传递给函数以进行进一步处理
创建一个临时变量计数以存储结果和一个名为num的变量并将其设置为1。
启动循环,直到x!= 0
在循环内部,检查IF x%2 == 0,然后将计数设置为count + num
将num设置为num * 2并将x设置为x / 2
返回计数
打印结果
#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