• 《剑指offer》二进制中1的个数


    题目

    输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
     
    代码:
    #include <iostream>
    using namespace std;
    //这种解法不用对n的位数进行移动
    int numberOf1(int n) 
    {
        int cnt = 0;
        unsigned int flag = 1;
        while (flag) {
            if (flag & n)
                cnt ++;
            flag = flag<<1;
        }
        return cnt;
    }
    //一个整数减去1的值和它本身作与运算的
    //结果相当于把它二进制表示中最后一位变成0
    int numberOf2(int n)
    {
        int cnt = 0;
        while (n) {
            ++ cnt;
            n = (n-1) & n;
        }
        return cnt;
    }
    int main(){
        int a = 1;
        int b = 0x7FFFFFFF;
        int c = 0x80000000;
        int d = 0xFFFFFFFF;
        int e = 0;
        cout<<numberOf2(a)<<endl; //1
        cout<<numberOf2(b)<<endl; //31
        cout<<numberOf2(c)<<endl; //1
        cout<<numberOf2(d)<<endl; //32
        cout<<numberOf2(e)<<endl; //0
        return 0;
    }
     
  • 相关阅读:
    python 迭代器
    python 装饰器
    python 函数进阶
    python 函数
    python文件操作
    python 集合 深浅拷贝
    python基础之循环
    python基础之字典
    python基础之操作列表
    python基础之列表
  • 原文地址:https://www.cnblogs.com/mooba/p/6558210.html
Copyright © 2020-2023  润新知