C

[C] 진법과 데이터

leejiwonn 2021. 12. 7. 03:38

 

해당 글은 "열혈 C 프로그래밍" 책을 바탕으로 작성되었습니다.
💡 컴퓨터는 2진수를 기반으로 데이터를 표현하고 연산도 진행한다.

 

진법의 종류

int num = 10;  // 특별한 선언이 없으면 10진수의 표현
int num = 0xA;  // 0x 로 시작하면 16진수로 인식
int num = 012;  // 0 으로 시작하면 8진수로 인식
  • 2진수 : 0과 1, 두 개의 기호를 이용해서 데이터를 표현하는 방식
  • 8진수 : 0~7을 이용해서 데이터를 표현하는 방식
  • 10진수 : 0~9를 이용해서 데이터를 표현하는 방식
  • 16진수 : 0~9와 A~F까지를 이용해서 데이터를 표현하는 방식

물론 컴퓨터는 내부적으로 2진수 형태로 값을 저장함!

 

데이터의 표현 단위 : 비트(Bit)와 바이트(Byte)

  • 비트 : 컴퓨터가 표현하는 데이터의 최소 단위로, 2진수 값 하나를 저장할 수 있는 메모리의 크기를 뜻함.
  • 바이트 : 비트를 8개 묶을 것을 뜻하는 단위
    n개의 비트를 가지고 나타낼 수 있는 데이터의 수는 2ⁿ개임.

 

정수의 표현방식

  • 가장 왼쪽에 존재하는 비트는 '부호 비트'로, 양수라면 0, 음수라면 1을 저장함. 이 비트는 MSB (Most Significant Bit) 라 불리며, 가장 중요한 비트라는 뜻을 지님. 이 비트를 제외한 나머지 비트들은 데이터의 크기를 나타냄.
  • 음의 정수를 표현할 때 : '2의 보수법' 사용하기

    1. 1의 보수 (1은 0으로, 0은 1로) 를 취한다.
    2. 1을 더한다.

 

실수의 표현방식

  • 아래와 같은 방식으로 넓은 범위의 실수를 표현할 수 있지만, 실수의 표현에는 오차가 존재함. 2의 n승은 절대로 0이 될 수 없는 것처럼, 컴퓨터는 정확하기보다는 아주 가까운 근사치를 통해 실수를 표현하기 때문임. 이를 가리켜 '부동 소수점 오차'라고 함.

+) 이는 컴퓨터 실수 표현의 한계에서 비롯된 것이므로 타 프로그래밍 언어에서도 존재하는 문제

 

+) 더 알아가기

  • 아라비아 숫자인 0~9를 가리켜 '숫자 기호'라고 함 ⇒ 수를 표현하는 기호. 즉, 숫자 = 기호 !
  • 16진수를 사용하는 이유 : 2진수 4개는 16진수 하나로 표현이 가능하기 때문 ⇒ 길이가 짧고 파악하기 쉬워짐.