假设x=65530,下面函数的返回值是多少?
int func(int x) {
int count = 0;
while(x) {
count++;
x = x & (x - 1);
}
return count;
}
正确答案:14
解析:这题的目的是统计int类型的x用二进制表示,其中有几个1。&运算,都为1则1,否则至少有一个不为1,则0。明白了题目的目的,我的解题思路用的是用最笨的方法将x和(x-1)的值转换成二进制,然后一次一次的&运算,得到答案。
x&(x - 1) 统计x用二进制表示1的个数
x|(x + 1) 统计x用二进制表示0的个数