颠倒二进制位

转为字符串处理

1
2
3
4
5
6
7
8
9
10
/**
* @param {number} n - a positive integer
* @return {number} - a positive integer
*/
var reverseBits = function (n) {
const binaryStr = n.toString(2).padStart(32, "0");
const reversedStr = binaryStr.split("").reverse().join("");
return parseInt(reversedStr, 2);
};
// console.log(reverseBits(00000010100101000001111010011100));

位运算

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* @param {number} n - a positive integer
* @return {number} - a positive integer
*/
var reverseBits = function (n) {
// 涉及位运算
let result = 0;
for (let i = 0; i < 32; i++) {
result <<= 1;
result |= n & 1;
n >>>= 1;
}
// 最后结果是把负数变为正确的正数
// JavaScript位运算使用32位整数
// 如果原本是负数(最高位是1),>>> 0会把它按无符号理解,即直接把二进制当成正数解释
// 高位(符号位)被当作普通位处理,不保留符号
return result >>> 0;
};
// console.log(reverseBits(00000010100101000001111010011100));

本站由 ao 使用 Stellar 1.29.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。