从中可以看出,有两种运算会得出32位的结果,不太好。对C++还不是很精通,所以这个效率还不是很清楚哪个个好。觉得用容器的可能会好些吧。如果是C,就用字符转换函数,或者直接除后和1做与运算。
- #include<stdio.h>
- void printb(int,int);
- int main()
- {
- int x;
- printf("Input number:");
- scanf("%d",&x);
- printb(x,sizeof(int)*8);
- putchar('\n');
- return 0;
- }
- void printb(int x,int n)
- {
- if(n>0)
- {
- putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1)));
- printb(x,n-1);
- }
- }
复制代码
|