题目描述
题目1.输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
思路分析:
利用1(1的二进制位为0001)依次与该数对应二进制的每一位进行与运算,每次结果为1表示对应二进制的该位为1,结果为0表示对应二进制的该位为0;
那么如何使1与二进制的每位进行比较呢?答案是让1每次比较完后做左移运算,则其二进制的1每次都能左移一位而其其余位为0
还是比较巧妙地!
代码如下:
public class Solution { public int NumberOf1(int n) { int count=0; int flag=1; while(flag!=0){ if((n&flag)!=0){ count++; } flag=flag<<1; } return count; } }