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

来源:互联网 发布:电子元件查询软件 app 编辑:程序博客网 时间:2024/06/04 19:10

比如输入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;}



1 0