前言
本文主要介绍的是C语言位运算的一道题,这是微软笔试题中的一道比较简单的的题目,希望对于广大读者学习C语言有一些帮助。深入了解C语言小知识,看题讲程序作用:
int func(x)
{
int countx =0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
知识解析
- &:按位与运算
- a&b:先把a和b转换为二进制然后 按照每一个二进制位按照逻辑与的运算规则去运算
例如: 2&1的运算如下:
题目分析
通过观察2&1的过程,即可以知道程序是将x转化为2进制看含有的1的个数。如果看的还不是很清楚的同学,你可以再自己写个3&2的过程,再去体会下。故如果x传入9999,则打印返回值应该是:8,运行测试结果如下: