先求出最高位。
function findComplement(num: number): number { let highbit = 0 for (let i = 1; i < 31; i++) { if (num >= (1 << i)) { highbit++ } else { break } } const mask = highbit == 30 ? 0x7fffffff : (1 << (highbit + 1)) - 1; return num ^ mask; }