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

C 이진수에서 후행 및 선행 0을 계산하는 프로그램

<시간/>

먼저 이진수에서 뒤에 오는 0이 무엇인지 이해합시다.

후행 0

최하위 비트(LSB)에서 첫 번째 0 이후의 0 위치를 이진수의 후행 0이라고 합니다.

예시

104는 십진수입니다.

104의 이진수:(MSB) 1101000(LSB)

여기,

  • MSB는 최상위 비트를 나타냅니다.
  • LSB는 최하위 비트를 나타냅니다.
  • 첫 번째 비트 세트 이후의 LSB에서 세 개의 0이 있습니다.
  • 후행 0의 수는 3개입니다.

예시

다음은 주어진 숫자에 대한 후행 0의 수를 계산하는 프로그램입니다 -

#include<stdio.h>
#include<stdlib.h>
int main(){
   int number, i, trail = 0, size;
   printf("Enter a number\n");
   scanf("%d",&number);
   size = sizeof(number) * 8;
   for(i = 0; i < size; i++){
      if((number >> i) & 1) {
         break;
      }
      trail++;
   }
   printf("Number of trailing ZERO is = %d", trail);
   return 0;
}

출력

위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -

Enter a number
24
Number of trailing ZERO is = 3

앞에 0

비트 앞의 0의 위치가 1로 설정된 경우 , 선행 0이라고 합니다.

예시

94는 십진수입니다.

94의 이진수:(MSB) .....001011110(LSB)

선행 ZERO의 수는 =25입니다.

프로그램

다음은 주어진 숫자에 대해 선행 0의 수를 계산하는 프로그램입니다.

#include<stdio.h>
#include<stdlib.h>
int main(){
   int number, i, lead = 0, Msb,size;
   printf("Enter a number\n");
   scanf("%d",&number);
   size = sizeof(number) * 8;
   Msb=1<<(size-1);
   for(i = 0; i < size; i++){
      if((number << i) & Msb) {
         break;
      }
      lead++;
   }
   printf("Number of Leading ZERO is = %d", lead);
   return 0;
}

출력

위의 프로그램을 실행하면 다음과 같은 결과가 나온다 -

Enter a number
94
Number of Leading ZERO is = 25