728x90
안녕하세요. 해당 포스트는 강민철 저자님의 '혼자 공부하는 컴퓨터 구조+운영체제'를 읽고 정리한 포스트입니다.
02-1. 0과 1로 숫자를 표현하는 방법
정보 단위
비트(bit)
- 컴퓨터가 이해하는 가장 작은 정보 단위
- 0 또는 1, 두 가지 정보로 표현할 수 있음(꺼짐/켜짐)
- n비트는 2ⁿ가지의 정보를 표현할 수 있음. 예를 들어 3비트일 경우에는 8가지 정보를 표현할 수 있음
- 바이트, ..., 테라바이트 등의 단위를 사용함(c.f. 이전 단위를 1,024개 묶어 표현한 단위는 kiB, MiB, GiB, TiB)
1바이트(byte) | 8비트(bit) |
1킬로바이트(1kB) | 1,000바이트(1,000byte) |
1메가바이트(1MB) | 1,000킬로바이트(1,000kB) |
1기가바이트(1GB) | 1,000메가바이트(1,000MB) |
1테라바이트(1TB) | 1,000기가바이트(1,000GB) |
워드(word)
- CPU가 한 번에 처리할 수 있는 데이터의 크기. 예를 들어 16비트를 한 번에 처리할 수 있다면 1워드는 16비트가 됨!
- 하프 워드(half word) : 워드의 절반 크기
- 풀 워드(full word) : 1배 크기
- 더블 워드(double word) : 2배 크기
이진법
수학에서 0과 1만으로 모든 숫자를 표현하는 방법
🗒 ex. 십진수 8을 이진수로 표기하면
- 1000(2)
- 0b1000
이진수의 음수 표현
- 2의 보수를 구해 음수로 간주하는 방법
- 사전적 의미 : 어떤 수를 그보다 큰 2ⁿ에서 뺀 값 (ex. 11(2)보다 큰 100(2)에서 11(2)을 뺀 값인 01(2)이 됨)
- 쉬운 설명(방법) : 모든 0과 1을 뒤집고 마지막에 1을 더해줌 (🗒 ex. 1011(2)에서 0100(2)으로 뒤집고 1을 더하여 0101(2)이 됨)
십육진법
수가 15가 넘어가는 시점에서 자리 올림을 하는 숫자 표현 방식이며 이진수를 십육진수로 변환하기 쉽기 때문에 많이 쓰임
🗒 ex. 십육진수 15 표기
- 수학적 표기 방식 : 15(16)
- 코드상 표기 방식 : 0x15
십육진수를 이진수로 변환하기
이진수를 십육진수로 변환하기
02-2. 0과 1로 문자를 표현하는 방법
문자 집합과 인코딩
문자 집합(character set)
컴퓨터가 인식하고 표현할 수 있는 문자의 모음
문자 인코딩(character encoding)
문자를 0과 1로 변환하는 과정(코드화 하는 과정)
문자 디코딩(character decoding) ↔ 문자 인코딩
0과 1로 이루어진 문자를 사람이 이해할 수 있도록 변환하는 과정
아스키 코드
아스키(ASCII)
- 초창기 문자 집합 중 하나. 영어 알파벳과 아라비아 숫자, 일부 특수문자를 포함함
- 아스키 문자들은 각각 7비트가 표현됨. 2⁷개로 총 128개의 문자를 표현할 수 있음
- 실제로는 8비트를 사용하나 1비트는 패리티 비트라고 불리는 오류 검출을 위해 사용되는 비트임
- 매우 간단하고 인코딩이 된다는 장점이 있지만 128개의 문자만을 표현할 수 있어서 다른 언어는 표현할 수가 없음(8비트 확장 아스키(extended ASCII)의 등장, but 여전히 부족)
EUC-KR
- 한글 인코딩 방식 2가지
- 완성형 인코딩 : 초성, 중성, 종성의 조합으로 이루어진 완성된 하나의 글자에 고유한 코드를 부여하는 방식
- 조합형 인코딩 : 초성, 중성, 종성 각각을 위한 비트열을 할당하여 조합해서 글자 코드를 완성하는 방식
- EUC-KR은 완성형 인코딩! 🗒 ex. '가'라는 글자의 경우 b0a1, '거'는 b0c5로 인코딩됨
- 글자 하나 하나에 2바이트 크기의 코드 부여. 2바이트 == 16비트 == 4자리 십육진수로 표현
- 2,350개 정도의 한글을 표현할 수 있지만 '쀍', '쀓', '믜'같은 글자를 표현할 수 없음
유니코드와 UTF-8
유니코드
- EUC-KR보다 다양한 한글을 포함하며 대부분 나라의 문자, 특수문자, 화살표, 이모티콘까지 코드로 표현할 수 있는 통일된 문자 집합
- 인코딩 방식에는 UTF-8, UTF-16, UTF-32 등이 있음
UTF-8
- 1바이트부터 4바이트까지의 인코딩 결과를 만들어냄. 인코딩 결과 값이 1~4바이트가 될 수 있음
- UTF-8로 인코딩한 결과가 몇 바이트가 될지는 유니코드 문자에 부여된 값의 범위에 따라 결정됨
🗒 ex.
'한'의 코드 포인트는 D55C(16), '글'은 AE00(16),
이것을 이진수로 표현하면 1101 0101 0101 1100(2), 1010 1110 0000 0000(2),
인코딩한 결과는 11101101 10010101 10011100(2), 11101010 10111000 10000000(2)
728x90
'CS > 컴퓨터구조' 카테고리의 다른 글
[CS/컴퓨터구조] 메모리 구조 (1) | 2024.11.08 |
---|---|
[CS/컴퓨터구조] 3. 명령어 (1) | 2024.01.15 |
[CS/컴퓨터구조] 1. 컴퓨터 구조 시작하기 (0) | 2024.01.14 |