먼저 이진수에서 뒤에 오는 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