判斷一個整數的二進制表示中有多少個1:
下面的圖是重點
32位的整數分別與下面的數與
0101 0101 0101 0101 0101 0101 0101 0101 1010 1010 1010 1010 1010 1010 1010 1010>>1
0011 0011 0011 0011 0011 0011 0011 0011 1100 1100 1100 1100 1100 1100 1100 1100>>2
0000 1111 0000 1111 0000 1111 0000 1111 1111 0000 1111 0000 1111 0000 1111 0000>>4
0000 0000 1111 1111 0000 0000 1111 1111 1111 1111 0000 0000 1111 1111 0000 1111>>8
0000 0000 0000 0000 1111 1111 1111 1111 1111 1111 1111 1111 0000 0000 0000 0000 >>16
直到0的重複次數是位數的一半即可。
如果讓我們算8位的char中有幾個1 我們只需要做大第3行即可