C如何计算长变量中0的最长连续序列的长度?
我有一个简单的函数,它计算长变量中有多少个0,其中是某个正整数值的二进制表示。但我需要实现一个新特性,它将返回0的最长连续序列的长度 用于0计数的函数:C如何计算长变量中0的最长连续序列的长度?,c,while-loop,binary,numbers,long-integer,C,While Loop,Binary,Numbers,Long Integer,我有一个简单的函数,它计算长变量中有多少个0,其中是某个正整数值的二进制表示。但我需要实现一个新特性,它将返回0的最长连续序列的长度 用于0计数的函数: int nullSeq(long binn) { int count=0; if(binn==0) return 1; while(binn!=0) { if ((binn & 1) == 0) { count++;
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;
}
F.e.号码是559。559的二进制表示是1000101111。0计数函数将返回4。最长的连续零序列应为3。到目前为止,我不自觉地将所有零的值用作最长序列。它对一些数字有效。但我需要实现一个新函数,它将找到最长的零序 实际上,您正在计算找到的零的总数。找到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;
}
好吧,你为什么不试试呢?我认为你可以使用你已经拥有的基本结构。我认为您需要添加两个变量,一个用于计算当前可见的零的数量,另一个用于跟踪看到的最长序列。你只需要决定当
(binn&1)
为真时该做什么,当它为假时该做什么。@DavidSchwartz说得对。实际上,我将把count>maxcount
复选框移到“0”案例中来说明这一点。