首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-24 
putchar(0+((unsigned)(x&(1(n-1)))(n-1)))//31左移1位再移回去什么意思?C/C++ code#includestdio

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位的值,输出即可。。。
希望对楼主有所帮助

热点排行