跳到主要内容

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