x = x&(x-1);什么意思?

intfunc(x){intcountx=0;while(x){countx++;x=x&(x-1);}returncountx;}假定x=9999。答案:8思路:将x转... int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数
展开
 我来答
sukai616
2014-05-04
知道答主
回答量:78
采纳率:0%
帮助的人:13.7万
展开全部
从右向左数,找到第一个1,把1后面的所有的数字都变为0。如x=1000110,x&(x-1)=1000100就是把x右边的第一个1后面的数变为0(包括1)。如果10000的话,结果就是00000了!这样就可以利用这个特性来计算这个十进制书转化为二进制数有多少个1!
liularryhao
2011-12-01 · TA获得超过448个赞
知道答主
回答量:85
采纳率:0%
帮助的人:92.5万
展开全部
&是位与的意思,就比如100&110=100,只有当两边都为1的时候才为1,其他时候都为0。(100第三个数为1,110的第三个数也为1,故结果的第三个数为1,其它都为0)

我给你概念了,这题目你再想想,不会就再追问,望采纳~~
追问
int func(x)
{
int countx = 0;
while(x)//x代表一个数对吧//比如67
{
countx ++;//++什么意思?67+1?
x = x&(x-1);
}
return countx;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式