본문 바로가기
CS/자료구조와 알고리즘

프로그래밍 기본 원리_데이터

by cariño 2023. 5. 10.
728x90
반응형

0과 1만으로 모든 수를 표현하는 방법

 

[이진법]

- 0과 1로 수를 표현하는 방법

- 숫자가 1을 넘어가는 시점에 자리 올림

- 일상적으로 숫자가 9 이상이 넘어갈 때 자리올림을 하는 십진법

- 이진법으로 나타내는 수를 이진수라고 한다. 

- 이진수 표기법: 1000(₂)/ 아래첨자로 보통 표기하지만 코드형에서 사용하는 방식 ob1000으로 표기해서 사용한다.  

 

컴퓨터에게 숫자를 알려주려면 일상적으로 사용하는 십진수가 아닌 0과 1로 표현된 이진수를 전달한다.

1 : 1
2: 1 0
3: 1 1
4: 1 0 0
5: 1 0 1
6: 1 1 0
7: 1 1 1
8: 1 0 0 0 

 

0 과 1로 음수 표현하기 : 2의 보수

- 어떤 수를 그보다 큰 2ⁿ에서 뺀 값

- 컴퓨터는 마이너스 부호를 인식하지 않기 때문에 0과 1만으로 음수를 표현해야 한다. 


* 여기서 헷갈릴 수 있는 부분? 

십진수 5의 이진수 표기법은 0101(₂), 음수료 표현한 값도 0101(₂)이다. 그렇다면 어떤게 음수이고 양수인지 구별할 수 있는 방법이 뭐가 있을까?

정답은 모든 숫자는 음, 양수의 플래그를 들고 다닌다고 생각하자. cpu 내부의 flag 레지스터에서 음, 양수를 표기한다. 

 

 

[십육진법]

- 이진법을 사람이 읽기에는 너무 길고 가독성이 좋지 않다. 

ex) 32는 이진수 100000

- 컴퓨터는 데이터를 표현 할 때 십육진법을 사용한다. 

- 15이상의 수가 넘어가는 시점에 자리 올림을 시킨다. 

- 코드에서 직접 표기해서 사용하는 사례도 많다. 

- 십육진수와 이진수 변환 체계가 쉽다. 

15를 십육진수로 표현할 때

- 코드상 표기 방식: 0x15

- 수학적 표기 방식: 15

 

 

 

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

컴퓨터가 어떻게 문자를 이해하는 지?

- 문자 집합(character set): 컴퓨터가 이해할 수 있는 문자의 모음

- 인코딩(encoding) : 코드화하는 과정 / 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정 넓은 범위에서 사용하는 용어이다. 

- 디코딩(decoding): 코드를 해석하는 과정/ 0과 1로 표현된 문자 코드로 문자를 변환하는 과정

 

 

 

[아스키 코드]

- 프로그램은 수많은 비트로 이루어져 있음

- 비트보다 더 큰 단위를 사용한다. 

- 알파벳, 아라비아 숫자 문자 및 제어 문자

- 실제로 사용하는 비트 수는 7비트로 하나의 문자를 표현한다. 

- 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트이다. 특별하게 남겨둔 비트 

- 총 문자의 개수는 128개이다. (0 ~ 127)

- 문자 하나하나에 부여되는 값을 코드 포인트라고 칭한다.

- 문자에 부여된 값을 인코딩 할 때 사용하기에 간단하다. 

- 128개보다 더 많은 문자, 한글을 포함한 다른 언어 및 다양한 특수 문자 표현이 불가능하다. 

- 언어별 인코딩 방식이 생겨나게 된다. 

 

 

[한글 인코딩 방식]

한글 인코딩 특징: 초, 중, 종성의 조합으로 이루어짐 / 완성형 인코딩 방식과 조합형 인코딩 방식이 존재

EUC-KR

- 완성형 인코딩 방식

- 글자 하나하나에 2바이트 크기의 코드가 부여되어 있다. 

(1byte == 8bit) (16bit === 4자리 16진수표현)

- 2300여개 한글 표현이 가능하다. (모든 한글을 표현하기에는 부족한 수)

- 인코딩 할 언어의 개수가 많아진다면 해당 언어의 인코딩을 모두 이해해야 하는 단점이 있다. 

 

- https://dencode.com 에서 직접 인코딩 해보기 ▼

bin string: 2진수로 표현

hex string: 헥사 코드로 표현

 

 

[유니코드 문자 집합 utf-8]

통일된 문자 집합 & 인코딩 방식 

 

 

유니코드

- 유니코드 문자에 부여된 고유한 값 = 코드 포인트 

- 통일된 문자 집합

- 현대 문자 표현에 있어 중요한 위치

- 한글, 영어, 화살표 같은 특수문자 심지어 이모티콘까지 인코딩 가능

- 유니코드 인코딩 방식은 여러가지 (utf-8, utf-16, utf-3...) ▼

https://symbl.cc/en/unicode/blocks/

 

유니코드 문자집합에 속한 문자(16진수 고유한 값)를 다양한 방식으로 실제로 컴퓨터가 이해하는 0과 1로 변환시키는 것을  유니코드 인코딩 방식이라 한다. 

 

 

 

utf-8 인코딩

- UTF(Unicode Transformation Format) 

- 가변 길이 인코딩 : 인코딩 결과가 1 바이트 ~ 4바이트

- 인코딩 결과에 따라 몇 바이트가 될 지는 유니코드에 부여된 코드값에 따라 다르다. 

 

글자가 깨질때? 문자 인코딩 호환 여부 혹은 문자집합에 속하지 않은 문자를 사용했는지? 를 확인할 수 있게 된다.

 

 

 

참고영상

728x90

댓글