将所有位翻转为Long(在Java中)

时间:2019-01-10 05:25:27

标签: bit-manipulation long-integer unsigned-integer

好奇为什么这样做

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'11111111111111111111111111111111111'将为-1(并且可能会导致问题),但是我仍然不确定为什么简单地翻转n中的位会导致问题。

0 个答案:

没有答案