본문 바로가기
C언어

C언어 기초 프로그래밍 3강 '데이터 표현 방식'

by IT Lifehacker 2025. 5. 23.

C언어 기초 프로그래밍 강좌

C언어 기초 프로그래밍을 혼자 쉽게 배울 수 있도록 실습예제들을 사용하여 설명하겠습니다:)
3강에서는 'C언어 프로그래밍의 데이터 표현 방식'에 대하여 알려드립니다.

1. 컴퓨터 데이터 표현 및 처리방식

컴퓨터가 데이터의 종류를 결정짓는 방법

   - 실제 저장이 되는 데이터의 형태는 10

   - 숫자와 기호를 사용한 수의 표현

2. 2진수를 10진수로 변환하기

★ 실습 예제

실습 1) 2진수 110110진수로 변환

풀이 과정:

1101 = (1×2³) + (1×2²) + (0×2¹) + (1×2⁰)
         = 8 + 4 + 0 + 1
         = 13

 

정답: 13

 

실습 2) 10진수 682진수로 변환하기

풀이 과정

68 ÷ 2 = 34, 나머지 0  
34 ÷ 2 = 17, 나머지 0  
17 ÷ 2 = 8,  나머지 1  
 8 ÷ 2 = 4,  나머지 0  
 4 ÷ 2 = 2,  나머지 0  
 2 ÷ 2 = 1,  나머지 0  
 1 ÷ 2 = 0,  나머지 1  

 

정답: 1000100

 

3. 2진수와 16진수 사이의 변환

  • 16진수 한자리는 네자리의 2진수로 표현 가능

★ 실습 예제

실습 1) 16진수 12DE2진수로 변환하기

풀이 과정: 16진수 12DE를 2진수로 변환하려면, 각 16진수 자릿수를 4자리 2진수로 바꿔서 이어 붙이면 됩니다.

12DE = 0001 0010 1101 1110
          = 1001011011110 (앞의 0은 생략 가능) 

 

정답: 1001011011110

 

실습 2) 11000010100116진수로 변환하기

풀이 과정: 2진수 110000101001을 16진수로 변환하려면, 오른쪽부터 4자리씩 끊어서 16진수로 바꾸면 됩니다.

110000101001 

→ 0001 1000 0101 0011 (왼쪽에 0을 붙여서 4자리로 맞춤)
→ 0001 1000 0101 1001

 

정답: C29

 

4. 2진수와 8진수 사이의 변환

  • 8진수 한자리는 세자리의 2진수로 표현 가능
  • 2진수를 8진수로 변환: 오른쪽에서부터 3자리씩 나누어 계산한다.

   ) 2진수 11001010018진수로 변환

   오른쪽에서부터 3자리씩 묶는다 : 1 100 101 001

   1 100 101 001맨앞에 '00'을 붙여준다 : 001 100 101 001

   001 100 101 001 : 8진수로 변환하면 1 4 5 1

★ 실습 예제

실습 1) 100100118진수로 변환하기

풀이 과정: 2진수 10010011을 8진수로 변환하려면, 3자리씩 오른쪽부터 끊어서 8진수로 바꾸면 됩니다.

10010011 → 010 010 011 (앞에 0을 붙여서 3자리씩 나눔)

 

정답: 223

 

실습 2) 8진수 5302진수로 변환하기

풀이 과정: 8진수 530을 2진수로 변환하려면, 각 8진수 숫자를 3자리 2진수로 바꿔서 이어 붙이면 됩니다.

530 = 101 011 000
       = 101011000

 

정답: 101011000

 

5. 8진수와 16진수로 숫자 표현하기

  • 0으로 시작하면 8진수로 인식
  • 0x로 시작하면 16진수로 인식
 

★ 실습 예제

아래의 코드를 입력하고 'number.c'로 저장한 후 실행해보세요.

#include <stdio.h>
int main(void) {
int n8=010;     //8진수 숫자(0으로 시작) 10을 n8이라는 변수에 저장
int n10=10;     //10진수 숫자 10을 n10이라는 변수에 저장
int n16=0x10; //16진수 숫자(0x로 시작) 10을 n16이라는 변수에 저장

printf("8진수 초기화 변수값: %d \n", n8);

// n8이라는 변수에 저장되어 있는 값을 10진수 숫자(%d)로 변환하여 출력

printf("10진수 초기화 변수값: %d \n", n10);

// n10이라는 변수에 저장되어 있는 값을 10진수 숫자(%d)로 변환하여 출력

printf("16진수 초기화 변수값: %d \n", n16);

// n16이라는 변수에 저장되어 있는 값을 10진수 숫자(%d)로 변환하여 출력
return 0;
}

[출력 결과]

8진수 초기화 변수값: 8
10진수 초기화 변수값: 10
16진수 초기화 변수값: 16

 

6. 데이터 표현의 단위

7. 정수의 표현 방식

8. 음의 정수 표현, 보수법

  • 음의 정수: 양의 정수값에 2의 보수를 취하면 음의 정수값이 된다.
  • 1의 보수: 1은 0으로, 0은 1로 변경한 수
  • 2의 보수: 1의 보수에 1을 더한 수
  • 음의 정수 검증방법: 양의 정수와 음의 정수를 더하여 0이 나오는지 확인
  • 부호 비트(왼쪽 첫번째 자리)가 0이면 양수, 1이면 음수

음의 정수 표현 단계

  1. 양수 5의 2진수 : 00000101
  2. 양수 5의 '1의 보수' : 11111010
  3. 양수 5의 '2의 보수' : 11111011
  4. 음수 5의 2진수 : 11111011
  5. 검증 : 00000101 + 11111011 = 0 (맨 앞자리의 올림수는 버림)

★ 실습 예제

실습 1) 음수 6을 음의 정수로 변환하세요. 

  1. 1의 보수 (비트 반전) : 11111001
  2. 2의 보수 (1의 보수 + 1) : 11111001 + 1 = 11111010
  3. -6은 2진수로 11111010 입니다.

실습 2) 음수 17을 음의 정수로 변환하세요.

  1. 1의 보수 (비트 반전) : 11101110
  2. 2의 보수 (1의 보수 + 1) : 11101110 + 1 = 11101111
  3. -17은 2진수로 11101111 입니다.

 

 

3강에서는 C언어의 데이터 표현방식에 대해 학습했습니다.

순서대로 따라해보고 예제들을 실습한다면 C언어 기초를 독학으로 배울 수 있습니다.

다음 4강에서는 'C언어의 자료형과 변수'에 대해 실습하도록 하겠습니다.