题目:
数列异或操作[异或,循环],给你两个整数,n和start,其中n为数据的数量,start为第一个数据。当前数据定义为:num = start + 2*i(i表示从第几个数据,从0开始)。请返回数列中所有数据按位异或(XOR)得到的结果
eg:[2,5,1,3,4,7]
i j
输出:[2,3,5,4,1,7]
(输出一个i,i++,输出一个j,j++)
n=5,start=0; 输出8;原因:(0^2^4^6^8)= 8
解析:
^异或符号的求解:
写出两个数的二进制,相同为0,不同为1
(5^3=0000 0101^0000 0011=0000 0110=6)
代码实现:
#include<stdio.h>
int Xor(int n,int start)
{
int temp=0;
for(int i=0;i<n;i++)
{
temp^=start+2*i;
}
return temp;
}
int main()
{
printf("%d\n",Xor(5,0));
}
如有错误,欢迎评论区告诉我,谢谢❤