#include <stdio.h>
// 주어진 10진수 n을 2진수로 바꾸어 줄력해 준다.
void tobinary(int n) {
// bin은 2진수를 담을 배열, 가장 밑의 자리부터 구하여
// 위로 가면서 2진수를 구해 간다. 출력할 때는 꺼꾸로 출력을 한다.
int bin[20]={0,};
// 인덱스 변수, i 0에서 출발한다.
int i=0;
// n이 0이 아닌동안 계속한다.
// 예를 들어서 n이 5라면
// 5를 2로 나눈 나머지는 1이되고 몫은 2가 된다.
// 가장 밑의 자리는 1이다. 이 수는 bin[0]에 들어간다.
// n은 2가 된다. 여전히 0이 아니다. 그리고 i는 1이 된다.
// 2를 2로 나눈 나머지는 0이고 몫은 1이다.
// bin[1]에는 0이 들어간다.
// n은 1이 되고, i는 2가 된다.
// n이 여전히 0이 아니므로 계속한다.
// bin[2] 에는 1을 2로 나눈 나머지인 1이 들어 간다.
// n은 1을 2로 나눈 몫이므로 0이 된다.
// i는 3이 된다.
// 이제 n이 0이 되어서 while문을 탈출한다. 이때 bin배열에는
// 1,0,1 이 들어 있고, i의 값은 3이다.
while(n!=0) {
bin[i]=n%2;
n=n/2;
i+=1;
}
// 출력은 꺼꾸로 해주어야 하므로 i를 1 감소시킨다.
i=i-1;
// i는 2가 되고 출력을 하면 맨 뒤의 1(가장 높은 자리) 이 출력이 된다.
// i를 감소하면 1이 되고 출력을 하면 0이 출력이 된다.
// i를 감소하면 0이 되고 출력을 하면 1이 출력이 된다.
// i를 감소하면 -1이 되고 while문을 탈출한다.
while(i>=0) {
printf("%d", bin[i]);
i-=1;
}
printf("\n");
}
int main() {
int n;
printf("정수: ");
scanf("%d", &n);
printf("2진수: ");
tobinary(n);
printf("8진수: 0%o\n", n);
printf("16진수: 0x%x\n", n);
printf("ASCII: %c\n", n);
return 0;
}
'c·c++ > c 프로그래밍' 카테고리의 다른 글
파일 expand (0) | 2013.10.25 |
---|---|
가우스 조던 소거법 (0) | 2013.10.20 |
c언어 연산자의 이해 (0) | 2013.10.07 |
10001번째 소수구하기 (0) | 2013.10.05 |
C언어 기초공부-중학생의 질문 (0) | 2013.10.05 |