mask <<= 1就是 mask = mask << 1也就是 mask = mask * 2<<二进制是向左移一位mask一开始是1,只有x的最低位是1,x & 1 = 1(两者都是1,返回1,否则0)然后 mask 依次变成了 2 4 8 ... 也就是2进制的 10 100 1000 ... 和上面同理,依次测试 x 是否倒数第二位,第三位,……是1这段代码的意思是输入一个数字,输出它有几个123的二进制是 10111,所以有4个1,输出4