黑马程序员技术交流社区

标题: 代码含义 [打印本页]

作者: 菜鸟de无奈    时间: 2014-4-30 21:22
标题: 代码含义
本帖最后由 菜鸟de无奈 于 2014-5-1 10:47 编辑

void ABC(int n)
{
    int bits = sizeof(n) * 8;
    while (bits-->0) {
        printf("%d", n>>bits&1);
        if (bits%4==0) printf(" ");
    }
    printf("\n");
}

求助解释下上面代码的含义
作者: jing迪    时间: 2014-4-30 21:29
哪里不懂??
作者: NenKeer    时间: 2014-4-30 21:49
  1. void ABC(int n)                       //这是一个将int整型变量n的按内存中32位输出的函数
  2. {
  3.     int bits = sizeof(n) * 8;         //因为n是int型变量,所以sizeof(n)=4 ,最后bit=32 也就是32位操作系统中,整性变量在内存中所占的字节数
  4.     while (bits-->0) {                //bits的值每次循环之后都进行b--运算,然后再判断是否大于0
  5.         printf("%d", n>>bits&1);      //n>>bits,是将n的32字节向又移动bits字节,然后将位移之后的结果和1进行与运算,目的是取得32字节的最后1字节
  6.         if (bits%4==0) printf(" ");   //没输出4次时,就输入一个空格 形成XXXX XXXX XXXX XXXX的效果
  7.     }
  8.     printf("\n");
  9. }
复制代码

作者: 菜鸟de无奈    时间: 2014-5-1 10:40
NenKeer 发表于 2014-4-30 21:49

明白了原来b-->0的意思是先进行b--运算,然后再判断是否大于0。

另:bits代表的应该是位,不是字节数吧?
作者: NenKeer    时间: 2014-5-1 11:14
菜鸟de无奈 发表于 2014-5-1 10:40
明白了原来b-->0的意思是先进行b--运算,然后再判断是否大于0。

另:bits代表的应该是位,不是字节数吧 ...

嗯 是位 写错了 哈哈




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2