您的位置:首页 > 其它

输入一个无符整形数,将它的二进制位倒序然后输出倒序后所对应的数

2014-12-28 19:20 316 查看
/*   编写函数unsigned int reverse_bit(unsigned int value)
这个函数的返回值value的二进制模式从左到右翻转后的值
如在32位的机器上25这个值包涵下列各位:
00000000000000000000000000011001
翻转后(2550136832)
10011000000000000000000000000000
最后输出2550136832
*/

#include<stdio.h>
#include<math.h>
unsigned int reverse_bit(unsigned int value)
{
int n=31;
int count = 0;
int ret ;
int rat = value;
while(rat != 0)
{
ret=rat%2;
count =count+ret*pow(2,n);
rat = rat/2;
n--;
}
printf("%u\n",count);
return 0;
}

int main()
{
reverse_bit(25);
return 0;
}


思路  如25   11001   n=31

    25%2=1   1乘2的31次幂    25/2=12   n--

    12%2=0   0乘2的30次幂    12/2=6    n--

    6%2=0    0乘2的29次幂    6/2=3     n--

    3%2=1    1乘2的28次幂    3/2=1     n--

    1%2=1    1乘2的27次幂    1/2=0     结束

    将这些数依次相加即可完成“倒序”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐