其实现思路如下:
将目标数值进行末尾比特位摘取,将所摘取的bit位放到一个相同类型的末尾,目标数值bit位右移,相同类型bit位左移。
C语言的位运算符:
#include <stdio.h>//按位翻转一个无符号整形
unsigned int reverse_bit(unsigned int value)
{
unsigned int num = 0;
int i = 0;
for (i = 1; i < 32; i++)
{
num += value & 1;
num <<= 1;
value >>= 1;
}
return num;
}
测试用例如下:
int main()
{
unsigned int num = 25;
printf("%u", reverse_bit(num));
system("pause");
return 0;
}
如 有不足之处,希望指正。
本文出自 “pawnsir的IT之路” 博客,请务必保留此出处http://10743407.blog.51cto.com/10733407/1747733
本文介绍了如何使用C语言的位运算符来翻转一个无符号整型的每一位。通过将目标数值的末尾比特位摘取,然后放到相同类型的末尾,同时目标数值右移,位移过程中的空位用原末尾比特填充,以此达到翻转所有位的效果。文中提供了具体的实现代码和测试例子。
![]ERO@L4PFP)9CQZC{QT1NRR.png wKiom1bZndLRecyCAABFU9abgvw125.png](http://s2.51cto.com/wyfs02/M02/7C/DF/wKiom1bZndLRecyCAABFU9abgvw125.png)
2862

被折叠的 条评论
为什么被折叠?



