We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
颠倒给定的 32 位无符号整数的二进制位。
示例 1:
输入: 00000010100101000001111010011100 输出: 00111001011110000010100101000000 解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。 示例 2:
输入:11111111111111111111111111111101 输出:10111111111111111111111111111111 解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293, 因此返回 3221225471 其二进制表示形式为 10101111110010110010011101101001。
提示:
请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。 在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。
进阶: 如果多次调用这个函数,你将如何优化你的算法?
解法: 1 转换string 补齐格式 2 字符串反转 3 转换二进制
/** * @param {number} n - a positive integer * @return {number} - a positive integer */ var reverseBits = function(n) { var res = (n).toString(2);//转换string while(res.length<32){ res = '0'+res; //没有的前面补齐 给反转做准备 } res = res.split('').reverse().join(''); //反转 return parseInt(res, 2); //转换字符串 二进制 }; //位移 // var reverseBits = function(n) { // let res = 0; // for (let i = 0; i < 32; i++) { // res = (res << 1) + (n & 1); //(进位运算) 将 res 的二进制形式向左移1位,右边用0填充。 n&1 比较 0&1=0 1&1=1 二进制运算 // // console.log(res.toString(2)); // // console.log((n & 1).toString(2)) // n = n >>> 1; //(反转) 将 n 的二进制表示向右移1位,丢弃被移出的位,并使用 0 在左侧填充。 // } // // console.log(res); // return res >>> 0; //左侧填充0 二进制转换; // };
The text was updated successfully, but these errors were encountered:
No branches or pull requests
颠倒给定的 32 位无符号整数的二进制位。
示例 1:
输入: 00000010100101000001111010011100
输出: 00111001011110000010100101000000
解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,
因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。
示例 2:
输入:11111111111111111111111111111101
输出:10111111111111111111111111111111
解释:输入的二进制串 11111111111111111111111111111101 表示无符号整数 4294967293,
因此返回 3221225471 其二进制表示形式为 10101111110010110010011101101001。
提示:
请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 2 中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。
进阶:
如果多次调用这个函数,你将如何优化你的算法?
解法:
1 转换string 补齐格式
2 字符串反转
3 转换二进制
The text was updated successfully, but these errors were encountered: