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?
*/
//解法一 3% 6ms
uint32_t reverseBits(uint32_t n) {
int i,j,temp;
int* a;
a=(int*)malloc(32*sizeof(int*));
memset(a,0,32*sizeof(int*));
for(i=0;n!=0;i++)
{
a[i] = n%2;
n = n /2;
}
for(i=0,j=31;i<32/2;i++,j--)
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
uint32_t m=0;
for(i=0;i<32;i++)
{
m = m + pow(2,i)*a[i];
}
return m;
}