#include <bits/stdc++.h>
using namespace std;
bool ac[29],bc[29];
int main()
{
long long a,b;
cin>>a>>b;
stack<bool> at,bt;
while(a)
{
at.push(a%2);
a/=2;
}
int i=0;
while(!(at.empty()))
{
bool o=at.top();
ac[i]=o;
i++;
at.pop();
}
while(b)
{
bt.push(b%2);
b/=2;
}
i=0;
while(!(bt.empty()))
{
bool p=bt.top();
bc[i]=p;
i++;
bt.pop();
}
if(a<0)
{
ac[28]=1;
}
if(b<0)
{
bc[28]=1;
}
bool c=0;
for(int i=0;i<29;i++)
{
if(i==28)
{
bc[i]|=ac[i];
}
else
{
if(ac[i]&&bc[i])
{
if(c)
{
c=1;
}
else
{
c=1;
~bc[i];
}
}
else
{
if(ac[i]^bc[i])
{
if(c)
{
c=1;
bc[i]=0;
}
else
{
bc[i]=1;
}
}
else
{
if(c)
{
bc[i]=1;
c=0;
}
else
{
bc[i]=0;
}
}
}
}
}
int sum=0;
for(int i=0;i<29;i++)
{
if(bc[i])
{
if(i==0)
{
sum+=1;
}
else
{
int y=2;
for(int j=0;j<i-1;j++)
{
y*=2;
}
sum+=y;
}
}
}
cout<<sum;
return 0;
}
求错因