C 如何计算 long 变量中最长连续 0 序列的长度?
C How can I count length of the longest continuous sequence of 0s in long variable?
我有一个简单的函数,它计算 long 变量中有多少个 0,其中 是某个正整数值的二进制表示。但我需要实现一个新功能,它将 return 最长连续 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;
}
F.e。数字559。559的二进制表示是1000101111。0计数函数将return 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;
}
我有一个简单的函数,它计算 long 变量中有多少个 0,其中 是某个正整数值的二进制表示。但我需要实现一个新功能,它将 return 最长连续 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;
}
F.e。数字559。559的二进制表示是1000101111。0计数函数将return 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;
}