剛剛看到的一個有趣的算法,可以把X最右邊的1去除掉。 101111111 127 201111110 126 3 4127 & 126 = 01111110 101011000 88 201010111 87 3 488 & 87 = 01010000 若要應用嘛,可用在想找出有幾個bit on的情況: 01int quickBitcount(unsigned x) 02{ 03int count = 0; 04 05while (x) 06{ 07x &= (x-1); 08count++; 09} 10return count; 11}