[혼자 공부하는 컴퓨터구조+운영체제]02장 데이터
02-1 0과 1로 숫자를 표현하는 방법
정보 단위
- 현재의 정보 단위
- 1 byte = 8 bit
- 1 kB = 1000 byte
- 1 MB = 1000 kB
- 1 GB = 1000 MB
- 1 TB = 1000 GB
- 전통적 단위
- 1 KiB = 1024 byte
- 1 MiB = 1024 KiB
- 1 GiB = 1024 MiB
- 1 TiB = 1024 GiB
- 워드
- CPU가 한 번에 처리할 수 있는 데이터 크기
- 워드를 기준으로 하프 워드, 풀 워드, 더블 워드 존재
이진법
이진수의 음수 표현
일반적으로 2의 보수(two’s complement)를 음수로 간주한다.
- 2의 보수: 어떤 수를 그보다 큰 2ⁿ에서 뺀 값
- 예) 11의 2의 보수는 100에서 11을 뺀 01
- 계산 방법: 이진수의 0과 1을 뒤집은 뒤 1을 더한 값
- 예) 11의 2의 보수는 00에 1을 더한 01
- 참고) 이진수의 0과 1을 뒤집은 수 ⇒ 1의 보수
- 한계: n개의 비트로는 -2ⁿ과 2ⁿ을 동시에 표현 불가
- 2ⁿ의 2의 보수는 2ⁿ과 같기 때문
16진법
16진법은 이진수로 변환하기 쉽기 때문에 용이하다.
- 16진수를 이진수로 변환하기
- 16진수 한 글자를 4비트의 이진수로 간주한다.
- 이진수를 16진수로 변환하기
- 이진수 숫자를 네 개씩 끊고 각각을 16진수로 변환한다.
02-2 0과 1로 문자를 표현하는 방법
문자 집합과 인코딩
- 문자 집합: 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
- 문자 인코딩: 문자를 컴퓨터가 이해할 수 있는 0과 1로 변환하는 과정
- 문자 디코딩: 0과 1을 사람이 이해할 수 있는 문자로 변환하는 과정
아스키코드
- American Standard Code for Information Interchange, ASCII
- 영어 알파벳, 아라비아 숫자, 일부 특수문자 포함
- 문자는 7비트로 표현 ⇒ 총 128개의 문자 표현
- 오류 검출을 위한 패리티 비트(parity bit)까지 총 8비트를 사용
- 코드 포인트: 문자 인코딩에서 글자에 부여된 고유한 값
- 예) 아스키 문자 A의 코드 포인트 ⇒ 65
- 확장 아스키: 아스키코드에 1비트를 추가
- 이 또한 크기가 부족
EUC-KR
- 한글 인코딩 방식
- 완성형 인코딩: 완성된 하나의 글자에 코드 부여
- 조합형 인코딩: 초성, 중성, 종성을 위한 각각의 비트열 할당 → 조합하여 글자 코드 완성
- EUC-KR
- 완성형 인코딩 방식
- 완성된 하나의 한글 단어에 2바이트 코드 부여 ⇒ 네 자리 16진수로 표현 가능
- 모든 한글 조합을 표현하지는 못함
- 완성형 인코딩 방식
- CP949(Code Page 949)
- 마이크로소프트가 개발한 EUC-KR의 확장 버전
- 이또한 모든 한글 조합을 표현하지는 못함
유니코드와 UTF-8
- 유니코드
- 여러 나라의 문자를 광범위하게 표현할 수 있는 통일된 문자 집합
U+
: 16진수로 유니코드를 표현할 때 사용하는 표기- 글자에 부여된 값을 UTF-8, UTF-16, UTF-32 등의 방식으로 인코딩
- UTF: Unicode Transformation Format
- UTF-8
- 유니코드 문자에 부여된 값의 범위에 따라 1 또는 2 또는 3 또는 4 바이트로 표현
- 인코딩 결과는 고정된 형태를 가지고, 빈 공간에 코드 포인트를 추가
- 예) “한”이 갖는 인코딩 형태: 1110
XXXX
10XXXXXX
10XXXXXX
- “한”의 코드 포인트 D55C → 1101 0101 0101 1100
- 1110
XXXX
10XXXXXX
10XXXXXX
에 코드 포인트 추가 - 최종 결과 ⇒ 1110
1101
10010101
10011100
This post is licensed under CC BY 4.0 by the author.