컴퓨터는 0과 1만을 이해한다
- 모든 양수를 1과 0으로 표현하는 방법: 이진수 binary
- 모든 음수를 1과 0으로 표현하는 방법: 2의 보수
- 모든 소수(분수)를 1과 0으로 표현하는 방법: 부동 소수점
- 모든 문자를 1과 0으로 표현하는 방법: 문자 집합(컴퓨터가 이해할 수 있는 문자들의 모음) & 인코딩 -> 이 방법은 컴퓨터마다 다를 수 있다.
2의 보수법 (2's compliment)
현재는 대표적으로 음수를 나타내는 방법이다. (0과 1만으로 음수를 표현하는 방법 중 하나)
2의 보수값은 이진수 값에 모든 0과 1을 뒤집은 뒤(여기까지는 1의 보수) 1을 더한 값이다
이걸 왜 사용하는가?
컴퓨터 내부에서는 음수 기호를 모르기 때문에 모든 숫자가 0과 1만으로 이루어져 있기 때문이다.
이건 cpu 내부의 플래그(cpu가 명령어를 실행하는 과정에서 참고할 정보의 모음) 레지스터를 이해하면 된다. 음수 플래그는 1, 양수일때는 1이 아닌 값 정도로만 이해하고 넘어가자
부동 소수점 (floating point)
더 쉽게 이해하자면, n이 양수면 소수점을 뒤로 이동시키고, n이 음수면 소숫점을 앞으로 이동시킨다고 생각하면 된다.
컴퓨터 내부의 소수 표현 방식으로
이진수를 m * 2^n꼴로 나타내고, 가수 부분은 1.XXX 꼴로 저장하기로 통일했다. 근데 모든 소숫점 가수 부분은 1.XXX로 통일하자고 했으니 어차피 모든 가수는 1.으로 시작하니까 1. 을 떼고 XXX로 저장한다.
1/3이나 1/10 같이 m*3^n
, m*10^n
꼴로 표현하면 딱 나눠 떨어지는데 m*10^n
, m*2^n
꼴로 표현하면 무한히 많은 가수가 필요하다.
👉 일부 십진수 소수를 표현하는 데 있어서 무한히 많은 가수가 필요한 이진수 소수꼴이 있을 수 있다. 그래서 메모리의 한계 때문에 일부 가수를 버릴 수 있기 때문에 일부 소수는 컴퓨터가 정확히 판단 못할 수 있다.
문자 인코딩과 디코딩
- 문자 집합: 표현 가능한 문자들의 집합 character set
- 문자 인코딩: (문자 집합에 속해있는) 문자를 0과 1로 이루어진 문자 코드로 변환
- 문자 디코딩: 0과 1로 이루어진 문자 코드를 (사람이 이해할 수 있는) 문자로 변환
아스키 문자 집합(알파벳, 아라비아 숫자, 일부 특수문자, 제어 문자)
👉 아스키 문자는 대응이 곧 인코딩인 문자다.
97을 10진수로 알아차리면 97이고 문자로 알아차리라고 하면 a라고 인식한다. a를 숫자로 인식하라고 하면 97로 인식한다는 뜻이다.
유니 코드 문자 집합(대부분의 언어, 특수문자, 이모티콘, 화살표 등) + utf-8, utf-16...
u+27BB 가 유니코드의 예시이다.
u+: 유니코드에서 이거 16진수예요.라고 표시하는 용도
27BB: 네 자리 16진수(코드 포인트)
유니코드 문자 집합을 인코딩하는 다양한 방법들이 있다. utf-8, utf-16 등이 있는데 얘네가 인코딩하는 대상은 코드 포인트이다.
'Upstage AI Lab 4기 > 컴퓨터 공학' 카테고리의 다른 글
[컴퓨터 구조] CPU 성능 (1) | 2024.07.24 |
---|---|
[컴퓨터 구조] 명령어 사이클과 인터럽트 (0) | 2024.07.17 |
[컴퓨터 구조] CPU 핵심 구성 요소 (1) | 2024.07.17 |
[컴퓨터 구조] 명령어 오퍼랜드 필드에서의 주소 지정 방법 (0) | 2024.07.17 |
[컴퓨터 구조] 컴퓨터 구조 (0) | 2024.07.17 |