跳到主要内容

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;
}