在閱讀採訪準備書時,我發現了一個關於補碼1的有趣屬性。使用1的補碼生成顯示第一個非零位的掩碼
物業說給一個數X,我們可以生成使用1的補數如下口罩,顯示第一個設置位(從右到左): X & ~(X - 1)
其中~
代表1的補數。
例如,如果X = 0b0011
然後 0b0011 & 0b1101 = 0b0001
我理解的是,筆者是做X-1
翻轉右起第一個非零位。不過我很好奇,他是怎麼想出顯示在X的第一個非零位的想法,採取1的的X-1
和&
荷蘭國際集團它的補充與X
會導致成位掩碼
它是我第一次在StackOverflow發佈,所以如果這個問題不屬於這裏,我很抱歉。
可能重複[n&〜(n - 1)這個函數做什麼?](http://stackoverflow.com/questions/21502303/nn-1-what-does-this-function-do) –