[关闭]
@lzb1096101803 2016-03-21T10:48:15.000000Z 字数 281 阅读 459

算法;二进制中1的个数

数据结构和算法


实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制的1001,有2位是1。输入9,输出2。

不能直接判断最后一位是不是1,(通过和1做与运算),如果是将整数右移,直到为0,因为输入一个负数,右移永远是1,会死循环

右移1,而不是整数

因为整数右移可能导致死循环,可以考虑将做与运算的1进行左移达到相同效果
循环次数等于整数二进制的位数,32位整数需要循环32次

几个1就循环几次

把一个整数减去1,再和原整数做与运算,会把整数最右边一个1变成0,那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注