zoukankan      html  css  js  c++  java
  • 031 二进制1的数量(keep it up, 看到这个问题,刚开始有点蒙)

    剑指offer在标题中:http://ac.jobdu.com/problem.php?pid=1513

    题目描写叙述:

    输入一个整数,输出该数二进制表示中1的个数。当中负数用补码表示。

    输入:

    输入可能包括多个測试例子。


    对于每一个输入文件,第一行输入一个整数T。代表測试例子的数量。对于每一个測试例子输入为一个整数。


    。n保证是int范围内的一个整数。

    输出:

    相应每一个測试案例。
    输出一个整数,代表输入的那个数中1的个数。

    例子输入:
    3
    4
    5
    -1
    例子输出:
    1
    2
    32
    正数的原码,补码,反码都同样,都等于它本身
    负数的补码是:符号位为1,其余各位求反,末位加1
    反码是:符号位为1,其余各位求反,但末位不加1
    也就是说,反码末位加上1就是补码
    -1011
    原码:11011
    反码:10100 //负数时,反码为原码取反
    补码:10101 //负数时。补码为原码取反+1
    移码:00101 //原数+10000
    计算机中的正负数都用补码表示,知道这点这题就简单了,由于刚開始还在想怎么把负数的补码求出来。

    。汗!

    代码:
    #include <stdio.h>
    #include <stdlib.h>
     
    int getCount1(int vNumber)
    {
        int i     = 32;
        int Count = 0;
     
        while (i--)
        {
            if (vNumber & 0x00000001) ++Count;
            vNumber >>= 1;
        }
     
        return Count;
    }
     
    int main()
    {
        int N;
        int Number;
     
        scanf("%d", &N);
        while (N--)
        {
            scanf("%d", &Number);
            printf("%d
    ", getCount1(Number));
        }
     
        //system("pause");
        return 0;
    }
     
    /**************************************************************
        Problem: 1513
        User: 
        Language: C
        Result: Accepted
        Time:80 ms
        Memory:912 kb
    ****************************************************************/





    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    动画差值
    高达模型
    TCP/IP负载均衡
    FreeImage使用
    Game Programming Pattern
    Apple Instruments
    GLEW OpenGL Access violation when using glGenVertexArrays
    微服务了解
    summary
    事务传播行为
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4719981.html
Copyright © 2011-2022 走看看