首页 > 代码库 > 【C语言】逆转二进制数的几种方法

【C语言】逆转二进制数的几种方法

比如输入10(1010)

输出 5(101)

代码有三种:

最笨的方法循环:
int fuc(int x)
{
	int count=0;
	int num=0;
	int n=x;
	while(n!=0)
	{
		n/=2;
		count++;
	}
	while(x!=0)
	{
		if(x%2==1)
		num+=(int)pow(2,count-1);
		x/=2;
		count--;
	}
	return num;
}

快速方法位运算:
int fuc2(int x)
{	
	int ret=0;
	while(x!=0)
	{	
		ret=ret|(x&1);
		x=x>>1;
		if(x!=0)
		ret=ret<<1;
	}
	return ret;
}

位运算的递归写法:
int fuc3(int x,int ret)
{
	
	ret=ret|(x&1);
	if(x>>1!=0) 
	{	
		int num=fuc3(x>>1,ret<<1);
		return num;
	}
	return ret;

}



【C语言】逆转二进制数的几种方法