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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 475201052 中级黑马   /  2014-3-23 21:33  /  1316 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

// 输出一个整数的二进制存储形式
void putBinary(int n)
{
    int bits = sizeof(n) * 8;
    while (bits-->0) {
        printf("%d", n>>bits&1);
        if (bits%4==0) printf(" ");
    }
    printf("\n");
}

这里面的bits-->0,和n>>bits&1 都是什么运算符啊?
好久没复习今天看看代码感觉有好多还得再复习复习再继续了。。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
-->是减减大于
>>是右移
&是与符号

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
bits-->0,相当于(bits--) > 0,--是自减运算符,bits--运算后,再比较是否大于0
n>>bits&1,&运算符优先级高于 >> ,&就是按位与运算符,即bits与1进行与位运算。>>是右移运算符,即n右移(bits&1与位运算后)这么多位。这些都不是一个运算符,而是几个运算符组合起来的表达式。
回复 使用道具 举报
这里面的bits-->0,和n>>bits&1 都是什么运算符啊?
--是自减预算
>>是右移
&是位与
/ 输出一个整数的二进制存储形式
void putBinary(int n)
{
    int bits = sizeof(n) * 8;//定义bits=32
    while (bits-->0) {//循环条件
        printf("%d", n>>bits&1)//整数在内存中右移bits位与1;
        if (bits%4==0) printf(" ");//输出4位后打空格
    }
    printf("\n");
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马