码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-12-21 00:20:12      阅读:196      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!