221024 TIL

apwierk·2022년 10월 24일
0

TIL

목록 보기
25/33

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

정보 단위

  • 비트: 0과 1을 나타내는 가장 작은 정보 단위
  • n비트는 2^n가지 정보를 표현한다.

8bit = 1byte

이진법

: 0과 1로 모든 숫자를 표현

  • 이진수의 음수 표현
    2의 보수: 어떤 수를 그보다 큰 2^n에서 뺀 값
    -> 0과 1을 모두 뒤집고 거기에 1을 더한 값

2의 보수의 한계*

  • 0을 음수로 표현할 경우
    0000 -> 1111 -> 10000
    10000이 -0을 표현했다?
  • 2^3의 음수 표현
    1000 -> 0111 -> 1000
    2^3의 2의 보수는 자기 자신이 된다.

십육진법

: 수가 15를 넘어가는 시점에서 올림

굳이 십육진법을 사용하는 이유*

: 이진수를 십육진수로, 십육진수를 이진수로 변환하기 쉽기 때문

변환 방법

: 2^4비트 씩 끊어서 십육진수로 표현
ex) 0001101000101011 -> 0001 1010 0010 1011 -> 1A2B


문자 집합과 인코딩

  • 문자 집합
    : 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
    이 문자 집합을 0과 1로 변환해야 컴퓨터가 이해할 수 있다.
    이 변환 과정을 '문자 인코딩' 이라고 한다.
    반대로, 0과 1로 표현되어 있는 문자를 사람이 이해할 수 있는 문자로 변환하는 과정을 '문자 디코딩' 이라고 한다.

아스키 코드

: 아스키는 초창기 문자 집합 중 하나로, 영어 알파벳과 아라비아 숫자, 그리고 일부 특수 문자를 포함한다. 각 7비트로 표현하여 128개의 문자를 표현한다.
-> 실제로는 8비트(1byte)를 사용한다. 하지만 1비트는 '패리티 비트'라고 불리는 오류 검출을 위해 사용되는 비트이기에 실질적으로 표현에 사용되는 비트는 7비트이다.

간단하게 인코딩 된다는 장점이 있다. 하지만 한글이 표현되지 않는다는 단점도 있다.
훗날 다양한 표현을 위해 8비트를 이용한 '확장 아스키'가 등장했지만 한글 및 여러 나라의 언어를 표현하기에 부족했다. 그런 이유로 EUC-KR이 등장했다.

EUC-KR

완성형 인코딩

: 초성 중성 종성의 조합으로 완성된 글자에 고유 코드를 붙이는 방식
ex) 가-1,나-2,다-3.....

조합형 인코딩

: 초성, 중성, 종성을 위한 비트얼을 각 할당하여 그것들의 조합으로 하나의 글자를 만드는 방식
ex) 강 -> ㄱ(0010) + ㅏ(0011) + 0(0001 00011) -> 0010 0011 0001 00011

: EUC-KR은 대표적인 완성형 인코딩 방식이다. 총 2바이트 크기의 코드를 갖고있다.
총 2350개 정도의 한글 단어를 표현할 수 있다.
문자 집합에 정의되지 않은 '쀍', '쀓 등 이와 같은 문자는 표현 불가하다.

유니코드와 UTF-8

EUC-KR 덕분에 한국어 코드를 표현하는 것이 편했지만 다른 나라의 언어를 인코딩 하는 것이 문제가 있었다. 이를 위해 유니코드가 등장했다.
유니코드 또한 아스키 코드나 EUC-KR과 같이 각 문자마다 고유한 값이 부여된다.
인코딩 방법이 다른 것과 다른데, 그 방법에는 UTF-8, UTF-16, UTF-32 등이 있다.
가장 대중적인 UTF-8

UTF-8

1바이트부터 4바이트까지 인코딩 결과를 만든다.
즉, UTF-8로 인코딩한 결과는 1바이트가 될 수도, 4바이트가 될 수도 있다.
각 바이트를 확인하고 맞는 문자를 부여한다.

profile
iOS 꿈나무 개발자

0개의 댓글