C# 程序用于查找给定整数的二进制表示中最长连续 1 的长度

programmingserver side programmingcsharp更新于 2025/9/16 4:02:00

要获取连续的 1,请使用按位左移运算符。这是我们的十进制数。

i = (i & (i << 1));

循环上述操作,直到 I 的值为 0,并使用变量获取长度;此处计数。

while (i != 0) {
   i = (i & (i << 1));
   count++;
}

我们这里举的例子是 150。

150 的二进制是 10010110。因此,我们有两个连续的 1。

示例

using System;
class Demo {
   private static int findConsecutive(int i) {
      int count = 0;
      while (i != 0) {
         i = (i & (i < 1));
         count++;
      }
      return count;
   }

   // 驱动程序代码
   public static void Main() {
      // 二进制或 150 为 10010110
      Console.WriteLine(findConsecutive(150));
   }
}

输出

2

相关文章