作者notBeing (read and be read)
看板C_and_CPP
标题Re: [问题] x+=x&-x 是什麽意思?
时间Sat Apr 28 11:44:33 2018
如果有号数表示方式为2的补数
MSB <---------------> LSB
+-----------------------+
x := | whatever | 1 | 0...0 |
+-----------------------+
+-----------------------+
-x = | ~whatever | 1 | 0...0 |
+-----------------------+
+-----------------------+
x&-x = | 0.......0 | 1 | 0...0 |
+-----------------------+
※ 引述《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]是一样的吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.37.171.77
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1524887075.A.208.html
1F:推 alan23273850: 推 04/28 12:02
2F:推 jasamine2050: 谢谢解释 04/28 16:26
3F:推 zxcv14011: 了解了 谢谢解释 04/28 18:51