정수 상수 — 10진수·8진수·16진수 표기 구분 | 기초 C언어 3.3.1

기초 C언어Chapter 03 상수 › Section 03 숫자

3.3.1 정수

네 종류의 상수 가운데 첫 번째. 소수점이 없다는 한 가지가 정수의 전부. 다만 같은 정수를 세 가지 진법으로 적을 수 있고, 내보낼 때도 세 가지 얼굴이 됨.

교재 수록 위치
교재
『기초 C언어』 · 2026년 개정판 · 364쪽
단원
Chapter 03 상수 › Section 03 숫자
쪽수
49p ~ 51p3쪽
세부 내용
01 정수 — 1 정수란?49p · 2 다양한 진법으로 표현49p~50p · 3 여러 진법으로 출력50p~51p

01정수란교재 49p

  • 정수(Integer) — 이름 그대로 소수점 이하의 값을 갖지 않는 온전한 수.
  • 0 77 -250. 값이 0이어도, 마이너스가 붙어도 정수. 소수점만 없으면 됨.
  • 왜 나누어 부르는가 — 컴퓨터는 소수점이 없는 수와 있는 수를 서로 다른 방식으로 저장함. 그래서 C언어도 둘을 다른 종류의 상수로 다룸.
  • 3.14처럼 소수점이 붙은 수는 정수가 아님 — 그쪽은 실수(다음 절).

02진법이란교재 49p

  • 진법 — 숫자를 몇 개까지 쓰고 언제 자리를 올릴지 정해 둔 약속.
    • 10진법 — 0부터 9까지 열 개를 쓰다가 열이 되면 자리를 하나 올림
    • 여덟 개만 쓰는 약속(8진법), 열여섯 개를 쓰는 약속(16진법)도 만들 수 있음
  • C언어의 특별한 점 — 코드 안에서 같은 정수를 여러 진법으로 적는 것을 허용함.

03세 가지로 적는 법교재 49p~50p

110진수 Decimal

  • 평소에 쓰는 표기법. 그대로 씀.
  • 코드에 숫자를 그대로 쓰면 컴파일러는 10진수로 인식.
  • 예 : 15 255

28진수 Octal

  • 숫자 앞에 0을 붙임.
  • 쓰는 숫자는 0~7. 8과 9는 아예 쓰지 않음.
  • 예 : 017(=15) 0377(=255)

316진수 Hexadecimal

  • 숫자 앞에 0x 또는 0X를 붙임.
  • 0~9A~F(소문자도 가능)를 씀.
  • 예 : 0xF(=15) 0xFF(=255)
  • 16진수에 글자가 끼는 이유 — 한 자리에 열여섯 가지를 담아야 하는데 숫자는 열 개뿐. 모자라는 여섯을 알파벳 앞 여섯 글자로 대신함(A=10 … F=15).
  • 어디에 쓰는가 — 메모리 주소나 색상 값을 표현하는 등 시스템 프로그래밍에서 매우 유용.

초보자가 자주 하는 실수 — 앞에 붙인 0

  • 자릿수를 맞추려고 07처럼 앞에 0을 붙이면, C언어는 10진수 7이 아니라 8진수 7로 읽음. (마침 값이 같아 그냥 넘어감)
  • 08 09 — 8진수에 없는 숫자라 컴파일러가 오류를 내며 멈춤. 그나마 나음.
  • 정말 위험한 것은 010 — 오류 없이 조용히 8진수 10, 곧 10진수 8이 되어 버림.
  • 숫자 앞의 0은 자리를 채우는 장식이 아니라 진법을 바꾸는 표시.

04같은 값, 세 가지 표기교재 49p~50p

10진수8진수16진수
15150170xF
25525503770xFF
  • 앞에서 따로따로 지나간 예시들은 사실 같은 두 값을 세 진법으로 적은 것.
  • 적는 방식만 다를 뿐 컴퓨터 안에서는 똑같은 하나의 값. 같은 사람을 이름으로 부르든 별명으로 부르든 같은 사람인 것과 같음.

05여러 진법으로 출력하기교재 50p

지금까지는 코드에 적는 방법이었고, 이 표는 화면에 내보내는 방법.

변환 지정자의미기억법
%d값을 10진수로 출력Decimal의 d
%o값을 8진수로 출력Octal의 o — 숫자 0이 아니라 알파벳 o
%x값을 16진수로 출력Hexadecimal의 x — 앞에서 본 0x의 그 x
  • %x는 16진수의 글자를 소문자로 찍음. 대문자로 찍고 싶으면 %X.
  • %o%x는 음수를 넣으면 마이너스가 사라지고 아주 긴 값이 나옴 → 0 이상의 수에 쓴다고 생각할 것.

06값 하나를 세 번 출력교재 50p~51p

CODE 3.3 | 여러 진법으로 출력하기
  1. #include <stdio.h>
  2. int main(void) {
  3. int value = 100;
  4. printf("10진수 표현: %d\n", value);
  5. printf("8진수 표현: %o\n", value);
  6. printf("16진수 표현: %x\n", value);
  7. return 0;
  8. }
RESULT
10진수 표현: 100
8진수 표현: 144
16진수 표현: 64
  • 03줄이 처음 보는 모양 — 변수를 하나 만드는 줄. int는 정수를 담는 상자, value는 그 상자의 이름, = 100이 처음 넣어 두는 값. 만드는 방법은 4장.
  • 저 100은 앞에 아무것도 붙이지 않았으니 10진수로 적은 정수 상수. 상자에 든 값은 이 하나뿐이고, 다음 세 줄은 그 하나를 다르게 보여 줄 뿐.
  • 정말 같은 값인지 세어 보면
    • 8진수 144 = 64×1 + 8×4 + 1×4 = 64 + 32 + 4 = 100
    • 16진수 64 = 16×6 + 1×4 = 96 + 4 = 100
  • 주의 — 출력에는 앞의 0이나 0x붙지 않음. 화면의 144를 그대로 코드에 옮겨 적으면 10진수 144가 됨.

이 절의 핵심 정리

  1. 정수 — 소수점 이하가 없는 온전한 수. 0도 음수도 정수다
  2. 적는 법 — 10진수는 그대로, 8진수는 앞에 0, 16진수는 앞에 0x
  3. 내보내는 법 — %d · %o · %x
  4. 적는 방식만 다를 뿐 컴퓨터 안에서는 같은 하나의 값이다
  5. 자릿수를 맞추려 앞에 붙인 0은 8진수가 된다 — 010은 오류 없이 값만 8로 바뀐다
강의 자료3.3.1 정수 1 / 10

번호를 누르면 해당 장으로 바로 이동합니다 · 방향키 ← → 로도 넘길 수 있습니다
다음 절 · 3.3.2 실수 교재 52p~53p — 소수점이 있는 수를 살펴봅니다.

더 자세한 내용은 교재에서

이 글은 『기초 C언어』 49p~51p의 내용을 강의 영상에 맞춰 핵심만 간추린 요약입니다. 각 개념의 상세한 설명과 예제, 실습 코드, 임용시험 기출문제 풀이는 교재에서 다루고 있습니다.

댓글

이 블로그의 인기 게시물

2007년 국가직 9급 기계일반 기출문제 풀이

2008년 국가직 9급 기계일반 기출문제 풀이

열역학의 개요 — 계·상태량·열과 일, 제1·제2법칙 | 기초 열역학 1.1