输入一个数,然后判断输出这是一个正数,或者这是一个负数,或者这是0 c语言

如题所述

题目是求一个整数的二进制中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}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-01-09

汽车之家 新车图解]  作为日系豪华品牌的雷克萨斯,凭借ES、RX等车型不俗的表现,在国内销售状况一片大好。而作为旗舰车型的现款LS,由于定价过高、车型老旧等原因,几乎处于无人问津的状态。好在这样的局面或许即将被打破,给人独树一帜感觉的全新LS最近已经到店,并将于1月11日上市。下面就让我们来看看国内版本LS各个等方面的表现吧。

汽车之家 新车图解]  作为日系豪华品牌的雷克萨斯,凭借ES、RX等车型不俗的表现,在国内销售状况一片大好。而作为旗舰车型的现款LS,由于定价过高、车型老旧等原因,几乎处于无人问津的状态。好在这样的局面或许即将被打破,给人独树一帜感觉的全新LS最近已经到店,并将于1月11日上市。下面就让我们来看看国内版本LS各个等方面的表现吧。