题目:
Reverse bits of a given 32 bits unsigned integer.
For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
分析:
给定一个32位无符号整数,需要反转其二进制表示,返回结果值。可以从右到左不断位移,再将其从左到右放入另一个数中,返回结果值。
代码:
public class BitManipulation {
public static int reverseBit(int n){
int res=0;
for(int i=0;i<32;i++){
if((n&1)==1){
res=(res<<1)+1;
n=n>>1;
}else{
res=res<<1;
n=n>>1;
}
}
return res;
}
public static void main(String[] args){
int n=43261596 ;
int res=reverse(n);
System.out.println("result:"+res);
}
}