public int xorOperation(int n, int start) {
int s = start >> 1;
int b0 = n & start & 1;
int ans = sumXor(s - 1) ^ sumXor(s + n - 1);
return ans << 1 | b0;
}
private int sumXor(int x){
//4i ^4i + 1 ^ 4i + 2 ^ 4i + 3 == 0
if(x%4 == 0)
return x;
else if(x%4 == 1)
return 1;
else if(x%4 == 2)
return x + 1;
else
return 0;
}