[2-1] 0과 1로 숫자를 표현하는 방법
정보 단위
먼저, 컴퓨터는 0또는 1밖에 이해하지 못합니다. 따라서 0과 1을 나타내는 가장 작은 정보 단위를 비트(Bit)라고 합니다.
- n비트로 2^n가지의 정보 표현 가능합니다.
- 프로그램은 수많은 비트로 이루어져 있습니다.
- 비트보다 더 큰 단위를 사용합니다.
- 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트 ...

- 워드(Word)
- CPU가 한 번에 처리할 수 있는 정보의 크기 단위
- 하프 워드(Half Word) : 워드의 절반 크기
- 풀 워드(Full Word) : 워드 크기
- 더블 워드(Double Word) : 워드의 두 배 크기
이진법
이진법은 1을 넘어가는 시점에 자리 올림을 하여 0과 1만으로 모든 수를 표현하는 방법입니다.
- 0과 1로 수를 표현하는 방법
- 숫자가 1을 넘어가는 시점에 자리올림
- 우리가 일상적으로 사용하는 진법은 숫자가 9를 넘어갈 때 자리올림하는 십진법(Decimal)

이진수의 음수 표현
2의 보수(Two's complement) : 0과 1만으로 음수를 표현하는 방법 중 가장 널리 사용되는 방법
사전적 의미 : 어떤 수를 그보다 큰 2^n에서 뺀 값
- 모든 0과 1을 뒤집고 (1의 보수)
- 거기에 1을 더한 값
이진수를 보고 음수인지 양수인지 구분하는 법?
이를 해결하기 위해, 플래그(Flag)를 사용합니다.
플래그(Flag) : 부가 정보

십육진법
방금 이진법을 보셨다시피, 이진법으로는 숫자의 길이가 너무 길어집니다.
이를 해결하기 위해 십육진법을 사용하게 됩니다.

왜 십진법을 사용하지 않고 십육진법을 사용하느냐?
이는 이진법과 십육진법은 서로 변환하기 쉽기 때문입니다.
십육진수를 이진수로 변환하기

이진수를 십육진수로 변환하기

[2-2] 0과 1로 문자를 표현하는 방법
문자 집합과 인코딩
- 문자 집합(Character Set) : 컴퓨터가 이해할 수 있는 문자의 모음
- 인코딩(Encoding) : 코드화하는 과정, 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정입니다.
- 디코딩(Decoding) : 코드를 해석하는 과정, 0과 1로 표현된 문자 코드로 문자로 변환하는 과정입니다.

아스키 코드
- 초창기 문자 집합 중 하나입니다.
- 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자입니다.
- 7비트로 하나의 문자를 표현합니다.
8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(Parity Bit)입니다.

아스키 코드는 한글을 포함한 다른 언어 문자, 다양한 특수 문자 표현은 불가합니다.
그 이유로는 아스키 코드는 7비트로 하나의 문자를 표현하기에 128개보다 많은 문자를 표현할 수 없습니다. 그래서 8비트 확장 아스키(extended ASCII)가 등장하였지만, 여전히 부족합니다.
한글 인코딩 : 완성형 vs 조합형 인코딩

EUC-KR
- KS X 1001 KS X 1003 문자집합 기반의 한글 인코딩 방식입니다.
- 완성형 인코딩입니다.
- 글자 하나 하나에 2바이트 크기의 코드를 부여합니다.
2바이트 == 16비트 == 4자리 십육진수로 표현합니다.

이렇게 2300여개의 한글 표현이 가능하지만, 여전히 모든 한글을 표현하기에는 부족한 수 입니다.
ex) 쀏, 뙠, 휔 같은 한글은 표현 불가
또한, 언어별 인코딩을 국가마다 하게 된다면 다국어를 지원하는 프로그램을 개발할 때엔 언어별 인코딩 방식을 모두 이해해야 합니다.
유니코드와 UTF-8
위와 같은 문제를 해결하기 위해 유니코드 문자 집합이 생겨났습니다.
유니코드 : 통일된 문자 집합이며, 한글, 영어, 화살표와 같은 특수 문자, 심지어 이모티콘까지 사용할 수 있는 현대 인코딩 방식입니다.

UTF-8 인코딩 방식
- UTF(Unicode Transformation Format) == 유니코드 인코딩 방법 입니다.
- 가변 길이 인코딩 : 인코딩 결과가 1바이트 ~ 4바이트
- 인코딩 결과가 몇 바이트가 될지는 유니코드에 부여된 값에 따라 다릅니다.

한 : D55C (== 1101 0101 0101 1100)
글 : AE00 (== 1010 1110 0000 0000)
한 : 11101101 10010101 10011100
글 : 11101010 10111000 10000000
Reference
Book<혼자공부하는 컴퓨터구조+운영체제>
Image (https://www.youtube.com/watch?v=peg8c6Gn-zc), (https://www.youtube.com/watch?v=upoRINMqlrw)
'Book > 혼자 공부하는 컴퓨터구조+운영체제' 카테고리의 다른 글
Chapter 6. 메모리와 캐시 메모리 (0) | 2024.01.09 |
---|---|
Chapter 5. CPU 성능 향상 기법 (0) | 2024.01.01 |
Chapter 4. CPU의 작동 원리 (0) | 2024.01.01 |
Chapter3. 명령어 (0) | 2023.12.26 |
Chapter 1. 컴퓨터 구조 시작하기 (1) | 2023.12.21 |