1.编写函数:
unsigned int reverse_bit(unsigned int value);
这个函数的返回值value的二进制位模式从左到右翻转后的值。
如:
在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832
共有两种方法:
方法一:移位:取出第i位的值 (n>>1)&1
ret(初始值为0)保存第i位的值 ret |=(n>>i)&1--->把第i位的值存到ret中.
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
unsigned int reverse_bit(unsigned int n)
{
int i = 0;
unsigned ret = 0;
for(i = 0;i < 32;i++)
{
//保存上一位的结果
ret <<= 1;
//把当前位的结果保存在ret的第一位
ret |= (n>>i)&1;
}
return ret;
}
int main()
{
unsigned int n = 25;//无符号数表示的是非负数
printf("%u\n",reverse_bit