作者ToMmyDong (ToMmyDong)
看板C_and_CPP
标题Re: [问题] x+=x&-x 是什麽意思?
时间Mon Jun 11 10:24:12 2018
※ 引述《zxcv14011 (Bessiozs)》之铭言:
: 最近看到程式码
: 有人这样写
: for(;x>=0; x+=x&-x)
: 但不太了解後面的 x+=x&-x是什麽意思
: 试着写了
: for(;x>=0; x+=x&-x)
: {
: cout<<x<<endl;
: }
: 跑的结果都是从 x开始 然後变成2的指数
: 所以想问 x+=x&-x是要怎样解读?
: 另外想问一下
: int a[1<<10]
: 这样跟 a[10000000000]是一样的吗?
x&-x 是取一个数字二进位最低非零位数 BIT会用到
1<<10是 2^10喔
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.120.188.205
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1528683854.A.806.html
1F:→ jerryh001: 我还以为这题两个月前就结案了 06/11 10:27
2F:→ alan23273850: 平行时空 嘻嘻 06/11 11:17
3F:推 Sex5F: 写这种code的应该在面试就直接踢了 06/20 12:12
4F:→ Sex5F: 业界各种背景的人都有,光维护这种考试style的code浪费太多 06/20 12:12
5F:→ Sex5F: 人力成本 06/20 12:13
6F:→ Sex5F: 现在compiler就会最佳化,还会这总写法真的是浪费别生命 06/20 12:14
7F:→ Sex5F: 加个括号很难? 06/20 12:14