перевернуть все биты для Long (в Java) - PullRequest
0 голосов
/ 10 января 2019

Любопытно, почему это работает

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.

...