跳到主要内容

190.颠倒二进制位

链接:190.颠倒二进制位
难度:Easy
标签:位运算、分治
简介:颠倒给定的 32 位无符号整数的二进制位。

题解 1 - typescript

  • 编辑时间:2021-03-29
  • 执行用时:156ms
  • 内存消耗:39.5MB
  • 编程语言:typescript
  • 解法介绍:拆分二进制进行倒置。
function reverseBits(n: number): number {
const bits = n.toString(2).split('');
while (bits.length < 32) bits.unshift('0');
return parseInt(bits.reverse().join(''), 2);
}

题解 2 - typescript

  • 编辑时间:2021-03-29
  • 执行用时:96ms
  • 内存消耗:36.5MB
  • 编程语言:typescript
  • 解法介绍:或运算进行逐一赋值。
function reverseBits(n: number): number {
let ans = 0;
for (let i = 0; i < 32 && n !== 0; i++) {
ans |= (n & 1) << (31 - i);
n >>= 1;
}
return ans >>> 0;
}

题解 3 - typescript

  • 编辑时间:2021-07-30
  • 执行用时:88ms
  • 内存消耗:39.6MB
  • 编程语言:typescript
  • 解法介绍:二进制逐位倒序赋值。
function reverseBits(n: number): number {
let ans = 0;
for (let i = 0; i < 32 && n > 0; i++) {
ans |= (n & 1) << (31 - i);
n >>>= 1;
}
return ans >>> 0;
}