zoukankan      html  css  js  c++  java
  • LintCode-365.二进制中有多少个1

    二进制中有多少个1

    计算在一个 32 位的整数的二进制表式中有多少个 1.

    样例

    • 给定 32 (100000),返回 1
    • 给定 5 (101),返回 2
    • 给定 1023 (111111111),返回 9

    挑战

    If the integer is n bits with m 1 bits. Can you do it in O(m) time?

    标签

    二进制 比特位操作

    code

    class Solution {
    public:
        /**
         * @param num: an integer
         * @return: an integer, the number of ones in num
         */
        int countOnes(int num) {
            // write your code here
            int num_bit[32]={0};
            int one_count = 0;
            int i,num2 = num;
            //  负数转正,符号位变1
            if(num < 0) {
                num = num * -1;
                num_bit[31] = 1;
            }
            //  十进制转二进制
            for(i=0; num; i++) {
                num_bit[i] = num%2;
                num /= 2;
            }
            //  负数原码转补码
            if(num2 < 0) {
                for(i=30; i>=0; i--) {
                    if(num_bit[i] == 1)
                        break;
                    num_bit[i] = 1;
                }
            }
            for(i=0; i<32; i++) {
                if(num_bit[i] == 1)
                    one_count++;
            }
            return one_count;
        }
    };
  • 相关阅读:
    docker
    redis 3.2.6 on ubuntu 14.04
    go异常处理
    go语言的命令行库
    iptables
    nsq
    etcd-v2第一集
    rabbitmq, windows/linux, c/c++/node.js/golang/dotnet
    zeromq:c,c++,golang及nodejs使用
    golang下的grpc
  • 原文地址:https://www.cnblogs.com/libaoquan/p/6806529.html
Copyright © 2011-2022 走看看