Любопытно, почему это работает
public long flip(long n) {
long finalResult = 0;
for (int i = 0; i < 32; i++) {
finalResult = finalResult | (1L << i);
}
return n ^ finalResult;
}
но это не
public long flip(long n) {
long finalResult = 0;
for (int i = 0; i < 32; i++) {
finalResult = finalResult | (1 << i);
}
return n ^ finalResult;
}
Я знаю, что finalResult '11111111111111111111111111111111' будет равен -1 (и, возможно, это вызывает проблему), но я до сих пор не уверен, почему это вызывает проблемы при простом переключении битов в n.