求整数的二进制1的个数

来源:互联网 发布:淘宝点赞拆红包怎么玩 编辑:程序博客网 时间:2024/05/14 01:09
// Use this for initialization
    void Start () {
        //demo ();
        //TimerManager.ShareInstance.OpenAllTimer ();


        int num1 = fun1 ( 1000000 );
        Debug.Log ( num1 );


        int num2 = fun2 ( 1000000 );
        Debug.Log ( num2 );


        int num3 = fun3 ( 1000000 );
        Debug.Log ( num3 );
    }


    /// <summary>
    /// 求整数的二进制1的个数
    /// </summary>
    /// <param name="a"></param>
    /// <returns></returns>
    public int fun1 ( int a )
    {
        int num = 0;
        while (a > 0)
        {
            a &= ( a - 1 );
            num++;
        }
        return num;
    }


    /// <summary>
    /// 求整数的二进制1的个数
    /// </summary>
    /// <param name="a"></param>
    /// <returns></returns>
    public int fun2 ( int a )
    {
        int num = 0;
        while (a > 0)
        {
            num += a & 0x01;
            a >>= 1;
        }
        return num;
    }


    /// <summary>
    /// 求整数的二进制1的个数
    /// </summary>
    /// <param name="a"></param>
    /// <returns></returns>
    public int fun3 (int a)
    {
        int num = 0;
        while (a > 0)
        {
            if (a % 2 == 1)
            {
                num++;
            }
            a = a / 2;
        }
        return num;
    }
0 0
原创粉丝点击