黑马程序员技术交流社区
标题: 问个小问题 [打印本页]
作者: 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 |