黑马程序员技术交流社区

标题: 问个小问题 [打印本页]

作者: 475201052    时间: 2014-3-23 21:33
标题: 问个小问题
// 输出一个整数的二进制存储形式
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 都是什么运算符啊?
好久没复习今天看看代码感觉有好多还得再复习复习再继续了。。


作者: 张海龙重新起航    时间: 2014-3-23 21:51
-->是减减大于
>>是右移
&是与符号
作者: conpgy    时间: 2014-3-24 23:18
bits-->0,相当于(bits--) > 0,--是自减运算符,bits--运算后,再比较是否大于0
n>>bits&1,&运算符优先级高于 >> ,&就是按位与运算符,即bits与1进行与位运算。>>是右移运算符,即n右移(bits&1与位运算后)这么多位。这些都不是一个运算符,而是几个运算符组合起来的表达式。
作者: agelessman    时间: 2014-3-25 08:18
这里面的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");
}





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