C如何计算长变量中最长的连续0序列的长度?

吉里克

我有一个简单的函数,可以计算长变量中有多少个0,其中一些正整数的二进制表示形式。但是我需要实现一个新功能,该功能将返回最长连续序列0的长度...

计数为0的功能:

int nullSeq(long binn)
{
    int count=0;

    if(binn==0)
        return 1;

    while(binn!=0)
    {
        if ((binn & 1) == 0)
        {
            count++;
        }
        binn=binn >> 1;
    }

    return count;
}

Fe表示数字559。559的二进制表示形式为1000101111。0计数函数将返回4。最长的连续零序列应为3。直到现在,我不自觉地将所有零的值用作最长序列。它适用于一些数字。但是我需要实现一个新函数,该函数将找到最长的零序列。

dbush

您实际上是在计算找到的零总数找到0时需要增加计数器,找到1时需要将计数器设置为0,并且必须跟踪计数器的最大值。

int nullSeq(long binn)
{
    int count=0, maxcount=0;

    if(binn==0) {
        return 1;
    }

    while(binn!=0) {
        if ((binn & 1) == 0) {
            count++;
            if (count > maxcount) {
                maxcount = count;
            }
        } else {
            count = 0;
        }
        binn=binn >> 1;
    }
    return maxcount;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章