您的位置:首页 > 其它

reverse_bits(二进制的数值转换)

2012-04-23 17:48 141 查看
#include <stdio.h>

unsigned int reverse_bits(unsigned int value);

int main()
{
unsigned int temp = 2550136832;
unsigned int result;
result = reverse_bits(temp);
printf("%u\n",temp);
return 0;
}

unsigned int reverse_bits(unsigned int value)
{
unsigned int answer;
unsigned int i;

answer = 0;

for (i = 1; i != 0; i <<= 1)
{
answer <<= 1;
if (value & 1)
{
answer |= 1;
}
value >>= 1;
}
return answer;
}

函数中i不是0,这就使循环与机器的字长无关,从而避免了可移植性问题

for循环中主要实现如下功能;

1.把旧的answer左移1位,为下一个位留下空间

2.如果value的最后一位是1,answer就与1进行or操作

3.然后将value右移至下一个位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: