숫자를 표현하는 방법
1. 정보 단위
- 최소 단위로는 비트(bit)가 있다.
- 1비트로는 0과 1을 표현할수 있으므로 2가지를 표현할 수 있다.
- 2비트로는 4가지, 3비트로는 8가지, 즉 2의 제곱으로 표현범위가 늘어난다.
- 1byte = 8 bit
- 1KB = 1000byte
- 1MB = 1000KB
- 1GB = 1000MB
- 1TB = 1000GB
* 1024개씩 묶게되면 KiB / MiB / GiB 이렇게 부른다.
2. word (워드)
CPU가 한번에 처리할 수 있는 정보의 크기 단위이다.
- 하프워드 / 풀 워드 / 더블 워드 라는 용어도 있다.
3. 0과 1로 음수를 표현할때는 2의 보수법을 사용한다.
= 어떤 수를 그보다 큰 2n에서 뺀 값이다.
[2진수]
11을 음수로 표현하면 01이 된다.
11보다 큰 2n은 100 이므로 100 - 11 을 하게되면 01이 된다.
OR
모든 0과 1을 뒤집고 1을 더하면 된다.
11 -> 00 -> 01 이 된다.
* - 1110을 표현하기 위한 0010과 십진수 2를 표현하기 위한 0010은 똑같이 생겼는데 어떻게 구분하나?
-> 이것을 구분짓기 위해 CPU 내부에 특별한 레지스터가 있다. "플래그 레지스터"
-> 모든 숫자는 플래그값을 들고다닌다고 한다.
4. 16진법
- 이진법으로는 숫자의 길이가 너무 길어진다.
- 컴퓨터의 데이터를 표현할 때 16진법도 많이 사용한다.
- 15(16) 수학적 표기 방식 / ox15 코드상 표기 방식
- 이진수 <-> 16진수 변환 방식이 매우 간단하여 사용한다.
문자를 표현하는 방법
1. 문자 집합(Character set)
- 컴퓨터가 이해할 수 있는 문자의 모음이다.
2. 인코딩(encoding)
- 코드화 하는 과정(문자화 이외에도 사용되곤 한다. 압축 or 암호화)
- 문자를 0과 1로 이루어진 문자 코드로 변환하는 과정이다.
3. 디코딩(decoding)
- 코드를 사람이 읽을 수 있도록 해석하는 과정이다.
- 0과 1로 표현된 문자코드를 문자로 변환하는 과정이다.
4. 대표적 문자집합
1) 아스키 코드
- 초창기 문자 집합 중 하나이다.
- 알파벳, 아라비아 숫자, 일부 특수 문자 및 제어문자를 표현할 수 있다.
- 7비트로 하나의 문자를 표현(8비트 중 1비트는 오류 검출을 위해 사용되는 패리티 비트이다.)
- 128개 보다 많은 문자를 표현할 수 가 없다.
따라서 언어별 인코딩 방식이 생기게 되었다.
2) 한글 인코딩 (완성형 vs 조합형 인코딩)
- 한글은 초성, 중성, 종성의 조합으로 이루어져있어서 완성형과 조합형 인코딩이 생겼다.
- 완성형 : 배 / 경 / 택 마다 코드 포인트를 주는것
- 조합형 : 초성 / 중성 / 종성 마다 코드포인트를 주는것
- ex) EUC-KR 인코딩방식
* 문자 하나하나에 부여된 값들을 코드 포인트라고 한다.
* 인코딩 눈으로 볼 수 있는 사이트 : https://dencode.com
3) 모든 언어, 특수문자까지 통일된 문자집합
3-1) 유니코드
- 통일된 문자 집합이다.
- 한글, 영어, 화살표 같은 특수문자, 이모티콘까지
- 현대 문자 표현에 있어 매우 중요한 위치에 있다.
- 유니코드의 인코딩 방식에는 utf-8 / utf-16 / utf-32 등이 있다.
- 유니코드의 코드포인트 : U+16진수 4자리 숫자
- 유니코드 문자집합 확인 -> https://unicode-table.com/en/blocks/
3-2) utf-8 (가장 대중적)
- UTF(Unicode Transformation Format) : 유니코드 인코딩 방법이다.
- 가변 길이 인코딩 방식이다.( 인코딩 결과가 1바이트 ~ 4바이트)
- 유니코드에 부여된 값에 따라 인코딩 결과가 몇 바이트가 될지 결정된다.
** 윈도우와 맥이 같이 일하게 되면 한글이 깨지곤 하는데 그 이유가 인코딩 방식에 있다.
윈도우에서는 기본적으로 utf-8이 아닌 다른 방식으로 한글을 인코딩하고 있고
맥 에서는 기본적으로 utf-8 방식으로 인코딩을 하고있기 때문에
윈도우 컴퓨터의 인코딩 방식을 utf-8로 변경해주면 오류가 해결된다.
협업시 주석이 깨져서 곤란한 상황이 생기는것을 막을 수 있다.
'프로그래밍 > 컴퓨터구조 및 운영체제' 카테고리의 다른 글
ALU와 제어장치 (1) | 2023.10.13 |
---|---|
소스코드와 명령어 feat C언어의 컴파일 방식 (1) | 2023.10.11 |
CPU / 주기억장치(RAM) / 보조기억장치 / 입출력장치 / 메인보드 / 시스템버스 (0) | 2023.10.08 |
컴퓨터 구조의 큰 그림 (0) | 2023.10.08 |
운영체제 관련 용어 (0) | 2023.09.16 |