首页 > 其他 > 详细

关于把一个无符号数的二进制位翻转的两种实现方法

时间:2015-12-21 00:18:39      阅读:178      评论:0      收藏:0      [点我收藏+]
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
unsigned int reserve_bit(unsigned int num)//采用移位的方法使一个数的二进制位翻转后返回
{
	unsigned int ret = 0;
	int bit = 0;
	int i = 0;
	for (i = 0; i < 32; i++)
	{
		ret <<= 1;
		bit = num & 1;
		ret = bit | ret;
		num = num / 2;
	}
	//1000 0000 0000 0000 0000 0000 0000 0000
	return ret;
}
unsigned int reserve1_bit(unsigned int num)//计算的方法
{
	int bit=0;
	unsigned int ret = 0;
	int i = 0;
	for (; i < 32; i++)
	{
		bit = num & 1;
		ret += bit*pow(2, 31 - i);
		num /= 2;
	}
	return ret;
}
int main()
{
	unsigned int num = 0;
	unsigned int ret = 0;
	unsigned int ret1 = 0;
	scanf_s("%d", &num);
	ret = reserve_bit(num);
	ret1 = reserve1_bit(num);
	printf("ret = %u\n", ret);
	printf("ret1 = %u\n", ret1);
	system("pause");
	return 0;
}


关于把一个无符号数的二进制位翻转的两种实现方法

原文:http://10918952.blog.51cto.com/10908952/1726639

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!