int NumberOf1(int n) { int cnt=0; for(int i=0;i<32;++i) { cnt+=n&1; n>>=1; } return cnt; }将n于1相与,即判断最后一位是否为1,是1则计数为加1,不是加0;判断完后n向右移1位,判断下一位是否为1;输入为int类型,总共32位,所以for循环32次;这样的好处在于不用区分负数和正数,因为只循环32次,没有理会左边补位1还是0.时...