首先要知道这个数的二进制转化,要实现从左到右的翻转,要么让二进制数从后往前移位,要么就是从后往前读每一位都乘以2^(32-i),最后相加就行了。
举例说明吧:
如在32位机器上15这个值包含下列各位:
00000000000000000000000000001111
翻转后:(4026531840)
11110000000000000000000000000000
标准函数:
unsigned int reverse_bit(unsigned int value);
这个函数的返回值为value的二进制位模式从左到右翻转后的值。
#include<stdio.h>
unsigned int reverse_bit(unsigned int value)
{
int i = 0;
int bit = 0;
int sum = 0;
for(i = 0;i < 32;i++) //这里从0开始
{
sum = sum << 1; //sum左移1位
bit = value & 1; //求出value的最后一位
sum = sum | bit;<span style="white-space:pre"> </span> //sum | bit得到左移后的数即为将value最后一位数往前移动一位。.
value = value >> 1;<span style="white-space:pre"> </