@lzb1096101803
2016-03-21T10:48:15.000000Z
字数 281
阅读 461
数据结构和算法
实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制的1001,有2位是1。输入9,输出2。
不能直接判断最后一位是不是1,(通过和1做与运算),如果是将整数右移,直到为0,因为输入一个负数,右移永远是1,会死循环
因为整数右移可能导致死循环,可以考虑将做与运算的1进行左移达到相同效果
循环次数等于整数二进制的位数,32位整数需要循环32次
把一个整数减去1,再和原整数做与运算,会把整数最右边一个1变成0,那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作