首页 > 用户发贴区 > 编程问题提问区 > 请帮忙解释下,非常感谢
2008
01-01

请帮忙解释下,非常感谢

请那位大哥帮忙解释一下下面代码实现的步骤


本人是新手,看不是很明白,非常感谢哈


代码目的是将输入的十进制数转换为二进制输出


代码如下:


#define N           32       //   32表示int是32位的,当然也可以改成16位或其他。  
   
  void   CANNGE(int   X)  
  {  
        int     i;  
        for(i   =   1;i   <=   N;i++){  
              if((1   <<   N   –   i)   &   X)printf(“1″);  
              else   printf(“0″);  
        }  
  }  
   
  int   main(void)  
  {  
          int     x;  
          scanf(“%d”,&x);  
          CANNGE(x);  
          return   0;  
  }


请帮忙解释下,非常感谢》有 3 条评论

  1. wanghouyu 说:

    这是谁编的代码,太乱了,应该简洁一些才对

  2. xstar 说:

    这个是位运算!
    按位与运算只有当两个二进位均为1时,结果位才为1 ,否则为0.
    而int   X本来就是二进制存在于系统中的,所以可以用&运算检测哪几位是1.

留下一个回复