十进制取反
lc1009
求整数 n 的按位补数:先算 n 的二进制位数,生成同长度全1掩码,再与 n 异或得到补数,n=0 特殊返回 1
class Solution {
public:
int bitwiseComplement(int n) {
if (n == 0) {
return 1;
}
int w = bit_width((uint32_t) n);
return ((1 << w) - 1) ^ n;
}
};
lc1009
求整数 n 的按位补数:先算 n 的二进制位数,生成同长度全1掩码,再与 n 异或得到补数,n=0 特殊返回 1
class Solution {
public:
int bitwiseComplement(int n) {
if (n == 0) {
return 1;
}
int w = bit_width((uint32_t) n);
return ((1 << w) - 1) ^ n;
}
};