1009.十进制整数的反码
链接:1009.十进制整数的反码
难度:Easy
标签:位运算
简介:给你一个十进制数 N,请你返回其二进制表示的反码所对应的十进制整数。
题解 1 - typescript
- 编辑时间:2021-10-18
- 执行用时:72ms
- 内存消耗:39.4MB
- 编程语言: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
- 执行用时:76ms
- 内存消耗:39.1MB
- 编程语言:typescript
- 解法介绍:获取最高位进行翻转,利用异或取反。
function bitwiseComplement(n: number): number {
if (n === 0) return 1;
let bit = 0;
for (; bit <= 30; bit++) if (n < 1 << bit) break;
if (bit === 31) bit = 0x7fffffff;
bit = (1 << bit) - 1;
return bit ^ n;
}