476.数字的补数
链接:476.数字的补数
难度:Easy
标签:位运算
简介:给你一个 正 整数 num ,输出它的补数。补数是对该数的二进制表示取反。
题解 1 - typescript
- 编辑时间:2021-10-18
- 执行用时:68ms
- 内存消耗:39.2MB
- 编程语言:typescript
- 解法介绍:利用字符串翻转。
function findComplement(num: number): number {
const bitStr = num
.toString(2)
.split('')
.map(v => (v === '1' ? '0' : '1'))
.join('');
return parseInt(bitStr, 2);
}
题解 2 - typescript
- 编辑时间:2021-10-18
- 执行用时:72ms
- 内存消耗:39.1MB
- 编程语言:typescript
- 解法介绍:获取最高位进行翻转,利用异或取反。
function findComplement(num: number): number {
let bit = 0;
for (; bit <= 30; bit++) if (num < 1 << bit) break;
if (bit === 31) bit = 0x7fffffff;
bit = (1 << bit) - 1;
return bit ^ num;
}