题目
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制是1001,有2位是1。因此如果输入9,该函数输出2。
可能引起死循环的解法
1 | public int NumberOf1(int n) { |
常规解法
1 | public int NumberOf1(int n) { |
能给面试官带来惊喜的解法
1 | public int NumberOf1(int n) { |
相关题目
用一条语句判断一个整数是不是2的整数次方。一个整数如果是2的整数次方,那么它的二进制表示中有且只有一位是1,而其他所有位都是0.根据前面的分析,把这个整数减去1之后再和它自己做与运算,这个整数中唯一的1就会变成0.
输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。比如10的二进制表示为1010,13的二进制表示为1101,需要改变1010中的3位才能得到1101.我们可以分为两步解决这个问题:第一步求这两个数的异或,第二步统计异或结果中1的位数。