Page 71 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 71
조금만 더! 정수 상수의 n진수 표현 방법
정수 상수는 정수 계열의 값을 나타내는 10진수(기수 10), 8진수(기수 8) 또는 16진수(기수 16)입니다. 정수
상수는 변경할 수 없는 정수 값을 나타낼 때 사용합니다. 정수 상수가 0x 또는 0X로 시작되는 경우는 16
진수이고, 숫자 0으로 시작되는 경우는 8진수입니다. 두 경우에 해당하지 않으면 10진수로 간주합니다.
아래 코드의 값은 같습니다.
0x1C /* 10진수 28에 대한 16진수 표기 */
034 /* 10진수 28에 대한 8진수 표기 */
16진수
16진수(Hexadecimal)는 아래 16종류의 숫자를 사용하여 수를 나타냅니다.
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 ~ F는 10진수 0 ~ 15에 해당합니다(A ~ F는 소문자라도 관계없습니다). 이 숫자를 모두 사용
하면 자릿수가 한 자리 올라가 10이 됩니다. 2자리의 숫자는 10부터 시작하여 FF까지입니다. 이 2자
리의 숫자를 모두 사용하면 그 다음 수는 100이 됩니다.
2
1
0
16진수의 각 자리는 아랫자리부터 순서대로 16 , 16 , 16 , … 으로 16의 거듭제곱 값을 갖습니다. 그러
므로 16진수 12A0(정수 상수로는 0x12A0으로 표기)은 아래처럼 풀어 쓸 수 있습니다.
2
1
3
12A0 = 1 × 16 + 2 × 16 + 10 × 16 + 0 × 16 0
다음 실습 2-8[A]는 기수 변환을 수행하는 프로그램입니다.
실습 2-8[A] •완성 파일 chap02/card_conv.c
01 /* 정수를 2진수 ~ 36진수로 기수 변환 */
02 #include <stdio.h>
03
04 /*--- 정수 값 x를 n진수로 변환하여 배열 d에 아랫자리부터 저장 ---*/
05 int card_convr(unsigned x, int n, char d[])
06 {
07 char dchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
08 int digits = 0; /* 변환 후 자릿수 */
02• 기본 자료구조 71