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바이트
- 인코딩 결과에 따라 몇 바이트가 될 지는 유니코드에 부여된 코드값에 따라 다르다.
글자가 깨질때? 문자 인코딩 호환 여부 혹은 문자집합에 속하지 않은 문자를 사용했는지? 를 확인할 수 있게 된다.
'CS > 자료구조와 알고리즘' 카테고리의 다른 글
프로그래밍 기본 원리 (자료 구조, 2진수와 16진수) (0) | 2023.04.29 |
---|---|
퀵 정렬, 병합 정렬, 힙 (0) | 2022.09.04 |
시간복잡도와 공간복잡도 (0) | 2022.09.03 |
댓글