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