BCD 코드란?
BCD(binary-coded decimal)코드는 10진수 각 자리의 숫자를 4비트(네 자리)의 2진수로 표현한 것입니다. 네자리의 2진수를 큰 쪽부터 8의 자리, 4의 자리, 2의 자리, 1의 자리라고 하기 때문에 8421코드라고도 합니다.
10진수를 BCD코드로 출력
결과값:
BCD(binary-coded decimal)코드는 10진수 각 자리의 숫자를 4비트(네 자리)의 2진수로 표현한 것입니다. 네자리의 2진수를 큰 쪽부터 8의 자리, 4의 자리, 2의 자리, 1의 자리라고 하기 때문에 8421코드라고도 합니다.
10진수를 BCD코드로 출력
#include <stdio.h> /*25. 10진수를 입력하면 BCD 코드로 출력하는 프로그램을 작성하시오*/ int numlen(int num);//10진수를 입력받아 자리수를 리턴하는 함수 void prtBCD(int num);//BCD코드를 출력하는 함수 void prtBin(int num);//2진수를 출력하는 함수 int main() { int num; printf("Put the number : "); scanf("%d", &num); prtBCD(num); //BCD코드 출력함수 return 0; } //자리수 리턴함수 int numlen(int num){ int i=0; while(1){ if(num!=0){ i++; num=num/10; } else break; } return i; } //10진수를 입력받아 2진수 출력함수 void prtBin(int num){ int i=3; //최대 쉬프트 넘버: 여기서는 2자리 이상의 10진수는 취급하지 않으므로 int flag=1; for(i;i>=0;i--){ if(num&(flag<<i)) printf("1"); else printf("0"); } } //10진수를 입력받아 BCD코드 출력함수 void prtBCD(int num){ int len, i; int divisor=1; int pstNum; len=numlen(num);//입력받은 10진수의 자리수를 len에 넣는다. for(i=1;i<len;i++){//divisor에 자리수만큼 10을 곱한수를 넣는다.(입력받은 10진수를 한자리씩 떼어낼 때 사용) divisor*=10; } for(i=1;i<=len;i++){//자리수만큼 반복 pstNum=num/divisor; //제일 큰자리의숫자부터 하나씩 끊은 정수를 pstNum에 입력 prtBin(pstNum); //pstNum을 2진수로 출력 //printf("%2d", pstNum); //검산용 10진수로 출력하기 num=num-pstNum*divisor;//이미 출력한 자리의 숫자를 빼서 없앤다. divisor/=10;//자리수가 하나 줄었으므로 10으로 한번 나눈다. } printf("\n"); }
결과값:
'셈틀 > C/C++' 카테고리의 다른 글
해결 (0) | 2008.11.17 |
---|---|
Cprogramming.com (0) | 2008.11.10 |
최대공약수(GCD)와 최소공배수(LCM) 구하기 (4) | 2008.11.07 |
strstr함수 구현하기 (0) | 2008.10.28 |
비트연산을 이용한 한달 출석부 관리 프로그램 (2) | 2008.10.17 |