int count=0; int m=9999; while(m) { count++; m=m&(m-1); } printf("count=%d\n",count);count是多少(没有上机的条件的话)
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 05:54:03
![int count=0; int m=9999; while(m) { count++; m=m&(m-1); } printf(](/uploads/image/z/12691561-49-1.jpg?t=int+count%3D0%3B+int+m%3D9999%3B+while%28m%29+%7B+count%2B%2B%3B+m%3Dm%26%28m-1%29%3B+%7D+printf%28%22count%3D%25d%5Cn%22%2Ccount%29%3Bcount%E6%98%AF%E5%A4%9A%E5%B0%91%EF%BC%88%E6%B2%A1%E6%9C%89%E4%B8%8A%E6%9C%BA%E7%9A%84%E6%9D%A1%E4%BB%B6%E7%9A%84%E8%AF%9D%EF%BC%89)
xQN@~
ċ1I@ĄXA%Fl14x&^<8oofeXR+hD ERȃItRlg2`J2dIZBH+C~*don i)vf.sniP^ЭEBv97BοUӊ?:L0p$1NFNv=|S̩+Do;$Bc8?YmBuuqPZ`Ae\(!"$(pa7TXI$b굢=1NV[%+Mԫ/ea[t^Xm7A!P4#"?`n,n4K?o@Xk.玵-\c
int count=0; int m=9999; while(m) { count++; m=m&(m-1); } printf("count=%d\n",count);count是多少(没有上机的条件的话)
int count=0; int m=9999; while(m) { count++; m=m&(m-1); } printf("count=%d\n",count);
count是多少(没有上机的条件的话)
int count=0; int m=9999; while(m) { count++; m=m&(m-1); } printf("count=%d\n",count);count是多少(没有上机的条件的话)
答案是8
m=m&(m-1); 可以理解为,将m的为1的位置为0
就说其中一个9,用8位表示为
0000 1001
9 - 1就是
0000 1000
9 & 8就是
0000 1000,于是就将最低位的1置为0了
同理,m为9999,一共有8个位上面是1,因此需要8次才能将所有的1置为0