不同的方法,方法相对复杂但没有用到^符号,因为身为小白还没有学习该符号
首先理解题目含义,然后根据意思理清思路
1题目中提到的为二进制中的每个数进行对比所以考虑十进制转换为二进制;
同时因为是数的对比可以考虑使用数组来挨个进行比对;
下图为十进制转换为2进制(想请教有没有转换二进制更简洁的方法)
#include<iostream>
using namespace std;
int main()
{
int x,y,i,j,distance=0;//定义数据
cin>>x>>y;
int a[30]={0};//定义数组a和b
int b[30]={0};
for(i=0;i<25;i++)//通过循环然后对x的数据进行二进制转换;将每个数放在数组的不同位置
{a[i]=x%2;//对x进行求余,且要注意所得的二进制顺序为反向的,如果要输出二进制要进行反向循环输出但此题中不需要考虑
x=x/2;
}
for(j=0;j<25;j++)//对y进行求余
{b[j]=y%2;
y=y/2;
}
//最终得到x和y的二进制所对应的数
}
然后进行比对,通过if从句进行比对;如果为真则distance加一;
for(i=0;i<25;i++)
if(a[i]!=b[i])
distance++;
cout<<distance<<endl;
最后输出结果就可以了