您的位置:首页 > 产品设计 > UI/UE

编写函数 unsigned int reverse_bit(unsigned int value); 这个函数的返回值吧value的二进制位模式从左到右翻转后的值。

2016-06-30 13:37 751 查看
题目描述:

  unsigned int reverse_bits(unsigned int value);这个函数的返回值是把value的二进制位模式从左到右变换一下后的值。例如,在32位机器上,25这个值包含下列各个位:

  00000000 00000000 00000000 00011001

函数的返回值应该是2 550 136 832,它的二进制位模式是:

  10011000 00000000 00000000 00000000

方法一:

unsigned int reverse_bit(unsigned int value)
{
unsigned int result = 0;
int num = 0;
int bit = 0;
while (num <32)
{
bit = value & 1;//取出最低位
value >>= 1;//右移一位,
result += bit<<(31-num);  //32位( 0 到 31)
num++;
}
return result;
}


方法二:

unsigned int reverse_bits(unsigned int value)
{
unsigned int answer= 0;
unsigned int i;
/*把一个unsigned int 数字1一直左移,直到它变成全0的时候,也就得到了该机器内unsigned int的长度*/
for (i = 1; i != 0; i <<= 1) //参考《C和指针》,太妙了
{
answer <<= 1;
if (value & 1) { answer |= 1; }
value >>= 1;
}
return answer;
}

测试:

#include<stdio.h>

int main()
{
//	unsigned int val = 25;
printf("反转后:%u",reverse_bit(25));
return 0;


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: