int nCount = 0; while (x) { nCount++; x = x & (x - 1); }
32
999
8
1
把9999化为二进制,每进行一次x&(x-1)的结果就会少一个1(按位与后变为0),因此原来x的1的个数就是答案
X=X&(X-1)这算的是X写成二进制数后其中1的个数
count = floor(log(9999)/log(2)) + 1;
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题