A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 菜鸟de无奈 中级黑马   /  2014-4-30 21:22  /  899 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 菜鸟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");
}

求助解释下上面代码的含义

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

4 个回复

倒序浏览
哪里不懂??
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

回复 使用道具 举报

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

另:bits代表的应该是位,不是字节数吧?
回复 使用道具 举报
菜鸟de无奈 发表于 2014-5-1 10:40
明白了原来b-->0的意思是先进行b--运算,然后再判断是否大于0。

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

嗯 是位 写错了 哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马