/** * @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(""); returnparseInt(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));