c语言中a&(a-1)=?,这句话是什么意思,想干什么,在哪能用

 我来答
丨红姬丨
2015-12-02 · TA获得超过1930个赞
知道小有建树答主
回答量:1187
采纳率:0%
帮助的人:273万
展开全部
这个是删除一个bit,每次a&(a-1)的结果会比a的二进制少一个bit,用个循环操作就可以算出有a多少个bit了
White_MouseYBZ
2014-05-12 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6596万
展开全部
a和a-1两个值进行按位与运算。如a=10,则a&(a-1)=10&9=1010 & 1001=1000=8。
更多追问追答
追问
我要知道这句话的作用,你只是带值算了一下
追答
怎么就叫只是算了一下?前面不是说了是“按位与”吗?至于想干什么,就是逻辑作用,你只给一句a&(a-1)谁也猜不出来!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
右灸
2020-06-09 · TA获得超过318个赞
知道答主
回答量:108
采纳率:0%
帮助的人:44万
展开全部
正解:这是检测a是否是2的n次幂,即a如果是2、4、8、16、32、64、128、256、512、2048、4096... 计算的结果就是0,否则就是非0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
无心人随缘
2017-12-09
知道答主
回答量:3
采纳率:0%
帮助的人:3060
展开全部
计算一个数的二进制中1的个数:
while(a)
{ a=a&(a-1);
count++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式