题目描述:
Reverse bits of a given 32 bits unsigned integer.
Example 1:
Input: 00000010100101000001111010011100 Output: 00111001011110000010100101000000 Explanation: The input binary string 00000010100101000001111010011100 represents the unsigned integer 43261596, so return 964176192 which its binary representation is 00111001011110000010100101000000.
Example 2:
Input: 11111111111111111111111111111101 Output: 10111111111111111111111111111111 Explanation: The input binary string 11111111111111111111111111111101 represents the unsigned integer 4294967293, so return 3221225471 which its binary representation is 10101111110010110010011101101001.
中文理解:给出一个数字,将这个数组转换为非负整数的二进制进行,得到该二进制反转后的证书表示。
解题思路:使用位运算的方法,每次将给定数的最低位移动到高位去。
代码(java):
public class Solution {
// you need treat n as an unsigned value
public int reverseBits(int n) {
int rev=0;
for(int i=0;i<32; i++){
rev=((n&1)<<(31-i))|rev;
n=n>>1;
}
return rev;
}
}