반응형
"혼자 공부하는 컴퓨터구조+운영체제" 를 참고하여 작성한 포스팅입니다.
01 0과 1로 숫자를 표현하는 방법
1 정보단위
비트
- 0과 1을 표현하는 가장 작은 정보 단위
- ex) 2비트로 표현할 수 있는 정보 - 2^2 = 4개, 3비트로 표현할 수 있는 정보 2^3 = 8개
- 프로그램은 수많은 비트로 이루어져 있음
비트 -> 바이트 -> 킬로바이트 -> 메가바이트 -> 기가바이트 -> 테라바이트 ...
워드
- CPU가 한 번에 처리할 수 있는 정보의 크기 단위
- 하프 워드(half word) : 워드의 절반 크기
- 풀 워드(full word) : 워드 크기
- 더블 워드 (double word) : 워드의 두 배 크기
2 이진법 : 0과 1로 숫자 표현하기
이진법 (binary)
- 0과 1로 수를 표현하는 방법
- 숫자가 1을 넘어가는 시점에 자리올림
ex) 1(1) -> 10(2) -> 11(3) -> 100(4) -> 101(5) - 우리가 일상적으로 사용하는 진법은 십진법(decimal)
- 표현 방법 : 아래 첨자를 사용하거나 맨앞에 0b를 추가
0과 1로 음수 표현하기 : 2의 보수
- 어떤 수를 그보다 큰 2^n 에서 뺀 값
== 모든 0과 1을 뒤집고 1 더한 값
- 양수인지 음수인지 어떻게 알 수 있는지?
- 플래그(flag) 레지스터로 CPU 내부에서 양수인지 음수인지 알 수 있음
3 십육진법
- 이진법으로는 숫자의 길이가 너무 길어진다.
- 십진수 32 == 이진수 100000
- 십육진법도 많이 사용, 15가 넘어가는 시점에 자리 올림
- 0~9는 동일, 10~15는 A~F
- 표현 방법 : 아래 첨자를 추가하거나 맨앞에 0x를 추가
- 십육진법을 쓰는 이유? 이진수 <-> 십육진수 변환이 쉬움
십육진수 -> 이진수 : 각 자리를 4자리 이진수로 변환
이진수 -> 십육진수 : 4개씩 잘라서 십육진수로 변환
02 0과 1로 문자를 표현하는 방법
1 문자 집합과 인코딩
문자 집합 (character set)
컴퓨터가 이해할 수 있는 문자의 모음
인코딩 (encoding)
코드화하는 과정
문자를 0과 1로 이루어진 문자 코드로 변환하는 과정
디코딩 (decoding)
코드를 해석하는 과정
0과 1로 표현된 문자 코드를 문자로 변환하는 과정
2 아스키 코드
- 초창기 문자 집합 중 하나
- 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어 문자
- 7비트로 하나의 문자 표현
- 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(parity bit)
c.f.) 코드 포인트 (code point) == 문자에 부여된 값
- 간단한 인코딩
- But 한글을 포함한 다른 언어 문자, 다양한 특수 문자 표현 불가능
- 128개 보다 많은 문자 표현 불가능
3 한글 인코딩 : 완성형 vs 조합형 인코딩
한글을 위한 인코딩이 필요 -> 완성형 인코딩 방식 / 조합형 인코딩 방식 존재
EUC-KR
- KS X 1001, KS X 1003 문자집합 기반의 한글 인코딩 방식
- 완성형 인코딩
- 글자 하나 하나에 2바이트 크기의 코드 부여
- 2바이트 == 16비트 == 4자리 십육진수로 표현
- 직접 인코딩해보기
- 2300여개의 한글 표현 가능
- 쀏, 뙠, 휔 같은 한글은 표현 불가능
- 언어별 인코딩을 국가마다 하면 다국원 지원 프로그램 개발 시 언어별 인코딩 방식을 모두 이해해야함
4 유니코드 문자 집합과 utf-8
유니코드
- 통일된 문자 집합
- 한글, 영어, 화살표와 같은 특수 문자 + 이모티콘 표현 가능
- 유니코드 문자 집합
utf-8 인코딩
- UTF(Unicode Transformation Format)
- 가변 길이 인코딩 : 인코딩 결과가 1바이트 ~ 4바이트
- 직접 인코딩해보기
TIP! 웹 개발 시 글씨가 깨진다 -> 인코딩이 호환되지 않거나 문자집합에 속하지 않는 문자를 썼을 때
반응형