x&(−x)x\&(-x)x&(−x) 寻找一个数x的二进制表示的最后一个1,统计x中有多少个1,x=x&(x−1)x = x\&(x-1)x=x&(x−1) 每次消除一个1,重复若干次,直至x变为0num = 0; while(x){ x = x&(x-1); num ++; }