Trick 2.5 - __builtin_popcount
要計算一個整數有多少個 1-bit,我們可以使用這個現成的函式。它的計算相當快喔,作法有點類似於在 interval tree 上面進行數位統計:先計算相鄰兩個 bit 的總和、再計算連續 4 個 bit 的總和、再計算連續 8 bits 的總和、然後是 16, 32, 64。
其他類似的 function 還有 __builtin_parity()
(計算奇偶性)、__builtin_ffs()
(最低 1-bit 是第幾位數)