【发布时间】:2021-08-26 10:50:07
【问题描述】:
为什么 " (num >> i)& 1 " 的结果在第二个循环中是 1?
main() {
char num = 5 ;
int i , count = 0 ;
for(i=0;i<8;i++){
if ((num >> i)& 1 )
count++;
}
printf("%d", count);
}
【问题讨论】:
-
简单回答;不是。
1仅在第一次和第三次迭代中,但运行代码并没有显示。您必须在循环内移动printf(并添加换行符)。输出的2不是第二个循环:这意味着有两个位被设置为1。 -
抱歉,我现在无法纠正拼写错误:输出的
2并不意味着第二个循环:这意味着有两位num设置为1。二进制的十进制值5是00000101。 -
那为什么不能自己运行这段代码呢?
标签: c for-loop char bit-shift bitwise-and