我通过在 C++ 中测试发现了一个观察结果。
观察是,
1 ) 如果两个数字都包含奇数个设置位,那么它的 XOR 将包含偶数个设置位。
2 ) 如果两个数字中的设置位数为偶数,则其 XOR 中的设置位数为偶数。
1)如果两个数字,其中一个数字具有偶数个设置位,另一个数字具有奇数个设置位, 则其 XOR 将具有奇数个设置位。
我无法证明。我想证明这一点。请帮我。
我在我的电脑上执行的代码是
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> vec[4];
for(int i=1;i<=100;i++){
for(int j=i+1;j<=100;j++){
int x=__builtin_popcount(i)%2;
int y=__builtin_popcount(j)%2;
int in=0;
in|=(x<<1);
in|=(y<<0);
int v=__builtin_popcount(i^j)%2;
vec[in].push_back(v);
}
}
for(int i=0;i<4;i++){
for(int j=0;j<vec[i].size();j++) cout<<vec[i][j] << " ";
cout << endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它给了我
第一行 100 个零 第二行 100 个零 …