计算在C ++中与n的XOR值更大的较小数字
我们得到一个整数,比方说num,任务是计算小于num的较小数字,其num与XOR的值将大于XOR值。
异或运算的真值表如下
输入-intnum=11
输出-与n的XOR值较大的较小数字的计数为-4
说明-
num为11,这意味着我们需要找到num的XOR,且数字小于num。所以数字是1XOR11<11(FALSE),2XOR11<11(FALSE),3XOR11<11(FALSE),4XOR11>11(TRUE),5XOR11>11(TRUE),6XOR11>11(TRUE),7XOR11>11(TRUE),8XOR11<11(FALSE),9XOR11<11(FALSE),10XOR11<11(FALSE)。
输入-intnum=12
输出-与n的XOR值较大的较小数字的计数为-3
说明-
num为12,这意味着我们需要找到num的XOR,且数字小于num。所以数字是1XOR12>12(TRUE),2XOR12>12(TRUE),3XOR12>12(TRUE),4XOR12<12(FALSE),5XOR12<12(FALSE),6XOR12<12(FALSE),7XOR12<12(FALSE),8XOR12<12(FALSE),9XOR12<12(FALSE),10XOR12<12(FALSE),11XOR12<12(假)。
以下程序中使用的方法如下
输入一个整数元素并将其存储在名为num的变量中。
将num的值传递给函数以进行进一步处理
创建一个临时变量计数以存储结果。
启动循环,直到num>0
在循环内部,检查IFnum&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
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短