题目是求一个整数的二进制中1的个数。
具体分析如下:
例如输入10,由于其二进制表示为1010,有两个1,因此输出2。
先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。
现在的问题变成怎样判断一个整数的最右边一位是不是1了。很简单,如果它和整数1作与运算。由于1除了最右边一位以外,其他所有位都为0。因此如果与运算的结果为1,表示整数的最右边一位是1,否则是0。
1int NumberOf1_Solution1(int i)
2{
3 int count = 0;
4 while(i)
5 {
6 if(i & 1)
7 count ++;
8 i = i >> 1;
9 }
10 return count;
11}
汽车之家 新车图解] 作为日系豪华品牌的雷克萨斯,凭借ES、RX等车型不俗的表现,在国内销售状况一片大好。而作为旗舰车型的现款LS,由于定价过高、车型老旧等原因,几乎处于无人问津的状态。好在这样的局面或许即将被打破,给人独树一帜感觉的全新LS最近已经到店,并将于1月11日上市。下面就让我们来看看国内版本LS各个等方面的表现吧。
汽车之家 新车图解] 作为日系豪华品牌的雷克萨斯,凭借ES、RX等车型不俗的表现,在国内销售状况一片大好。而作为旗舰车型的现款LS,由于定价过高、车型老旧等原因,几乎处于无人问津的状态。好在这样的局面或许即将被打破,给人独树一帜感觉的全新LS最近已经到店,并将于1月11日上市。下面就让我们来看看国内版本LS各个等方面的表现吧。