728x90
컴퓨터는 0과 1로 모든 정보를 표현하고, 0과1로 표현된 정보만을 이해 할수 있다! 그런데..?
우리는 컴퓨터가 표현하는 정보 단위를 알 필요가 있다.
그리고 0과 1만으로 숫자를 표현하는 방법 또한 알아야 한다!
컴퓨터가 이해하는 정보 단위
- 비트 (bit): 0과 1을 표현하는 가장 작은 정보 단위(ex-꺼짐or켜짐)
- 바이트 : 여덟개의 비트를 묶은 단위
- 단위가 커지면 킬로바이트(kB),메가바이트(MB),기가바이트(GB),테라바이트(TB)등도 있다
- 워드
- CPU가 한 번에 처리할 수 있는 정보의 크기 단위
- 하프 워드, 풀 워드, 더블 워드 등이 있다
이진법
- 0과 1로 수를 표현 하는 방법
- 숫자가 1을 넘어가는 시점에 자리 올림
- 우리가 일상적으로 사용하는 9를 넘어설때 자리올림을 하는 진법은 10진법
이진법의 음수 표현 방법
- 2의 보수
- 모든 0과 1을 뒤집고 1 더한 값
십육진법
- 십진수가 0,1,2,3,------10,11,12,13,14,15,16,17 이면
- 십육진수는 0,1,2,3,----8,9,A,B,C,----E,F,10(자리올림),11,----
지금까지가 0과 1로 다양한 숫자를 표현하는 방법이었다면
이번엔 다양한 문자들은 어떻게 표현 할까?
0과 1로 문자를 표현하는 방법
문자 집합과 인코딩
- 문자 집합(character set)
- 컴퓨터가 이해할 수 있는 문자의 모음
- 인코딩(encoding)
- 코드화하는 과정
- 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정
- 디코딩(decoding)
- 인코딩의 반대 과정
- 코드를 해석하는 과정
- 0과 1로 표현된 문자 코드로 문자로 변환하는 과정
아스키 코드
- 초창기 문자 집합 중 하나
- 알파벳(대소문자 포함),아라비아 숫자,일부 특수 문자 및 제어 문자
- 7비트로 하나의 문자 표현
- 8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트(parity bit)
- 간단한 인코딩이지만 한글을 포함한 다른 언어 문자, 다양한 특수문자 표현이 불가 하다
한글 인코딩
- 완성형 인코딩
- 완성된 단어 하나 하나에 코드를 부여해서 합치는 방법(홍+길+동)
- 조합형 인코딩
- 초정,중성,종성등 각각의 모음 자음에 일일이 코드를 부여해서 하는 법(ㅎ+ㅗ+ㅇ+ㄱ+ㅣ+ㄹ----)
EUC-KR
- 2300여개의 한글 표현 가능
- 여전히 모든 한글을 표현하기에는 부족하다
- 뷁,샒 과 같은 한글은 표현이 불가
이렇게 하면 다국어 프로그램을 만들면 모든 언어의 인코딩 방식을 이해 해야한다..OMG
모든 언어, 특수문자까지 통일된 문자 집합을 사용하면 어떨까?
그런 모든 것을 인코딩 해주는 방식이 있다면?!
유니코드 문자 집합과 utf-8
유니코드
- 한글,영어,화살표,이모티콘등 모두 통일된 문자 집합유니코드의 인코딩 방식
- utf-8,utf-16,utf-32 ----...등이 있다
utf-8 인코딩
- UTF(Unicode Transformation Format) == 유니코드 인코딩 방법
- 가변 길이 인코딩 : 인코딩의 결과가 1바이트~ 4바이트
- 인코딩 결과가 몇 바이트가 될지는 유니코드에 부여된 값에 따라 다르다
본 게시물은 한빛 미디어 <혼자 공부하는 컴퓨터구조+운영체제>를 읽고 공부한 것을 기록한 게시물입니다.
'컴퓨터 구조' 카테고리의 다른 글
빠른 CPU를 만들어보자!(1) : 클럭, 코어,스레드 (0) | 2023.02.03 |
---|---|
명령어 사이클과 인터럽트 (feat. 멈춰!!) (1) | 2023.02.03 |
CPU안의 ALU & 제어장치 & 레지스터 (0) | 2023.02.03 |
소스 코드와 명령어 (0) | 2023.02.03 |
컴퓨터 속 사황(4황) 핵심 부품 (0) | 2023.02.03 |