📢 본 글은 혼공학습단 미션과 함께 정리해보는 글 입니다.
컴퓨터는 0과 1만 이해할 수 있다. 그런데 어떻게 1보다 큰 수를 이해할 수 있을까?
0과 1을 나타내는 가장 작은 정보 단위
를 비트라고 한다.비트보다 더 큰 단위를 사용
해 표현한다. (ex: MB, GB)단위 | 이전 단위 |
---|---|
1바이트 (1byte) | 8비트 (8bit) |
1킬로바이트 (1kB) | 1,000바이트 (1,000byte) |
1메가바이트 (1MB) | 1,000킬로바이트 (1,000kB) |
1기가바이트 (1GB) | 1,000메가바이트 (1,000MB) |
1테라바이트 (1TB) | 1,000기가바이트 (1,000GB) |
이전 단위를 1,024개씩 묶은 단위는 kiB, MiB, GiB 등과 같은 것들이다.
1kB는 1,024byte, 1MB는 1,024kB 등과 같이 표현하는 것은 잘못된 관습
이다. 과거에는 용량이 크지 않았기 때문에 1,000을 1,024로 계산해도 문제가 없었지만, 지금은 오차가 매우 크게 나기 때문에 정확하게 1,000배 씩 표현한다.
CPU가 한 번에 처리
할 수 있는 데이터 크기하프 워드
: 워드 절반풀 워드
: 1배 크기의 워드더블 워드
: 2배 크기의 워드0과 1로 수를 표현
하는 방법숫자가 1을 넘어가는 시점에 자리올림
우리가 넘겨준 수가 이진수로 표현된 수인지, 아니면 십진수로 표현된 수인지를 어떻게 구분할까? (ex: 1000을 보낼 때, 1000이 실제 1000일까 아니면 8일까?)
로 표현하거나, 0b1000
으로 표현한다. (숫자, 코드)
이진법에는 음수가 없기 때문에 0과 1만으로 음수를 표현
해야 한다. 이때 활용되는 방법이 2의 보수법
(two’s complement - 어떤 수를 그보다 큰 에서 뺀 값, 즉 모든 0과 1을 뒤집고 1을 더한 값)이다.
참고로 이진수의 0과 1을 뒤집은 수
를 1의 보수
라고 한다.
2의 보수의 한계
0이나 형태의 이진수에 2의 보수를 취하면 원하는 음수값을 얻을 수 없음
→ → (가 0을 음수로 표현한 것일까?) → 이 때는 자리 올림이 발생한 비트의 1을 버림
() → → (을 음수로 표현한 값이 양수로 표현한 값과 같다) → 이 문제는 본질적으로 해결하기 어렵다. 즉 n 비트로는 과 을 동시에 표현할 수 없다.)
를 표현하기 위한 와 십진수 5를 표현하기 위한 를 구분하기 위해 사용되는 개념이다.
CPU 내부에 있는 플래그 레지스터
의 값을 통해 식별한다.
0과 1만으로 모든 숫자를 표현한다면 숫자의 길이가 너무 길어진다.
십육진법을 활용해서 이 문제를 해결한다.
수가 15를 넘어가는 시점에 자리 올림
을 하는 숫자 표현 방식이다.
십진수 10 ~ 15를 A ~ F로 표기한다.
이진수처럼 아래첨자를 붙이거나 숫자 앞에 0x를 붙여 구분한다. (숫자, 코드)
문자 또한 어떻게 컴퓨터가 이해할 수 있는지 보자.
컴퓨터가 이해할 수 있는 문자의 모음
을 뜻한다.아스키 코드 (ASCII, American Standard Code for Information Interchange)
오류 검출을 위해 사용
되는 parity bit
코드 포인트 (code point)
: 글자에 부여된 값 (ex: A = 65)문자를 0과 1로 이루어진 문자 코드로 변환
하는 과정을 뜻한다.
0과 1로 이루어진 문자 코드를 문자로 변환
하는 과정을 뜻한다.
모든 언어를 아우르는 문자 집합과 통일된 표준 인코딩 방식
이 있도록 함유니코드
는 현대 문자를 표현할 때 가장 많이 사용되는 표준 문자 집합
UTF-8
이 가장 대중적부족하거나 보완할 점이 있다면 댓글 부탁드립니다 😃