读书人

putchar(#039;0#039;+((unsigned)(xamp;(1lt;lt;(n-1)

发布时间: 2012-04-24 14:15:38 作者: rapoo

putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1)));//31左移1位再移回去什么意思?

C/C++ code
#include<stdio.h>void printb(int,int);int main(){int x;printf("Input number:");scanf("%d",&x);printf("number of decimal form:%d\n",x);printf(" it's binary form:");printb(x,sizeof(int)*8); /*x:整数 sizeof(int):int型在内存中所占的字节数sizeof(int)*8:int型对应的位数*/putchar('\n');}void printb(int x,int n){if(n>0){putchar('0'+((unsigned)(x&(1<<(n-1)))>>(n-1))); /*输出第n位*/printb(x,n-1); /*归调用,输出x的后n-1位*/}}


[解决办法]
然后,再将变化后的x右移n-1位,那么他的第一位就变成了其第n位的值,输出即可。。。
希望对楼主有所帮助

读书人网 >C语言

热点推荐