Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

주어진 정수의 이진 표현에서 가장 긴 연속 1의 길이를 찾는 C# 프로그램

<시간/>

연속적인 1을 가져오려면 Bitwise Left Shift Operator를 사용하십시오. 다음은 십진수입니다.

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;
   }

   // Driver code
   public static void Main() {
      // Binary or 150 is 10010110
      Console.WriteLine(findConsecutive(150));
   }
}

출력

2