eg: 在32位机器上25这个值包含下列各位: 00000000000000000000000000011001 翻转后:(2550136832) 10011000000000000000000000000000 程序结果返回: 2550136832

代码核心思想是将原来二进制序列最后一位看作反转后第一位,将原来二进制序列第一位看作反转后最后一位进行重新计算

比如15的2进制为 ……0000 1111 计算方法为 12^1 + 12^2 + 12^3 + 12^4 反转后为1111 0000…… 计算方法为 12^31+12^30+12^29+12^28

源代码:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
unsigned int reverse_bit(unsigned int value)
{
	int i=0,sum=0;
	for (i = 0; i < 32;i++)
	{
		sum+=((value>> i) &1) * (int)pow(2, 31 - i);//反转后依次每位二进制序列重新计算
	}
	return sum;
}
int main()
{
	int n = 25,result;
	result=reverse_bit(n);
	printf("%u", result);
	system("pause");
	return 0;
}