0과 1로 숫자를 표현하는 방법


정보 단위

비트: 0과 1을 나타내는 가장 작은 정보 단위(n비트는 2n가지 정보를 표현)

1바이트(1byte) 8비트(8bit)
1킬로바이트(1kB) 1000바이트(1,000byte)
1메가바이트(1MB) 1,000킬로바이트(1,000kB)
1기가바이트(1GB) 1,000메가바이트(1,000MB)
1테라바이트(1TB) 1,000기가바이트(1,000GB)

NOTE.
1kB는 1,024byte, 1MB는 1,024kB 는 잘못된 관습이다.
이전 단위를 1,024개 묶어 표현한 단위는 KiB, MiB, TiB이다

이진법binary

: 0과 1만으로 모든 숫자를 표현하는 방법

위와 같이 혼동을 예방하기 위해 수학적으론 전자, 코드 상에서 후자로 표현한다.

이진수의 음수 표현

가장 널리 사용되는 방법은 2의 보수를 구해 이 값을 음수로 간주하는 방법

2의 보수: 어떤 수를 그보다 큰 2n에서 뺀 값

  • 더 쉬운 표현 방법: 모든 이진수의 0과 1을 뒤집은 수를 1의 보수. 거기에 1을 더한 값을 2의 보수라 한다.

이진수만 봐서는 음수인지 양수인지 구분이 어렵다. 그래서 플래그를 사용한다.

십육진법

: 15를 넘어가는 시점에 자리 올림하여 수를 표현

십육진수 -> 이진수

이진수 -> 십육진수

0과 1로 문자를 표현하는 방법


문자 집합과 인코딩

  • 문자 집합
    : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음.
  • 문자 인코딩
    : 문자를 0과 1로 변환하는 과정
  • 문자 디코딩
    : 인코딩의 반대 과정, 0과 1로 이루어진 문자 코드를 문자로 변환하는 과정

아스키 코드

아스키
: 초창기 문자 집합 중 하나로 알파벳, 아라비아 숫자, 일부 특수 문자를 포함한다.
속한 문자들은 각각 7비트로 표현되고 정보의 가짓수는 128개의 문자가 있다.

아스키 문자에 대응된 고유한 수(코드 포인트)를 아스키 코드라고 한다.
예) 'A' = 65, 'a' = 97

EUC-KR

한글은 각 음절 하나하나가 초성, 중성, 종서의 조합으로 이루어져서 완성형, 조합형의 인코딩이 존재한다.

  • 한글 1글자 = 2바이트 = 16비트
  • 2,350개의 한글 단어를 표현가능
  • 문자 집합에 표현되지 않은 글자로 깨지는 문제
    확장 버전의 CP949이 등장하지만 이마저도 불완전

완성형 인코딩

: 완성된 하나의 글자에 고유한 코드를 부여하는 인코딩 방식
예) '가' = 1, '나' = 2

조합형 인코딩

: 초성, 중성, 종성을 위한 각 비트열이 할당되어 그것들의 조합으로 하나의 글자 코드를 완성하는 방식

유니코드와 UTF-8

유니코드

: EUC-KR 보다 다양한 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표, 이모티콘을 코드로 표현 가능한 통일된 문자 집합

UTF

: Unicode Transformation Format

0개의 댓글