컴퓨터는 0과 1로 데이터를 표현합니다. 그러므로 사용하는 프로그래머 및 개발자는 이 세계에 익숙해지며,
숙지해야 할 필요가 있습니다. 데이터 단위부터 이진수와 16진수를 어떻게 다루는지 살펴보고자 합니다.
데이터 단위
1bit- 0과 1을 표현하는 방법을 1bit라고 말합니다
- 1비트의 표현 가능 갯수 2, 2비트의 표현 가능 갯수 4, 3비트의 표현 가능 갯수 8
- 2의 bit 제곱의 표현할 수 있는 정보를 가집니다.
- 더 자세하게 알고 싶다면 해당 문서를 참고하세요. 컴퓨터의 동작원리 트랜지스터
1byte- bit가 8개로 묶으면 byte입니다.
- 2의 8 제곱이므로 256가지를 표현할 수 있습니다.
1kilobtye- 바이트를 1000개를 묶은 단위를 kb라고 말합니다.
magabyte- 키로바이트를 1000개로 묶은 단위입니다.
terabyte- 키로 바이트를 1000개로 묶은 단위입니다.
컴퓨터는 숫자를 어떤 방식으로 다룰까요?
위에서 말하다 싶이 컴퓨터는 0과 1로 이뤄진 묶음으로 데이터를 다룹니다.
10 진수와 2진수
- 컴퓨터에서 0과 1을 다루는 것은 주로 2진수를 사용합니다.
- 사람은 보통 10진수를 사용하지만, 컴퓨터는 2진수를 사용하기 때문에 처음 접한다면 익숙하지 않습니다.
- 그럼에도 개발자는 2진수의 체계 사용에 익숙해져야 합니다.
| 사람(10진수) | 컴퓨터(2진수) |
| 1 | 1 |
| 2 | 10 |
| 3 | 11 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
| 8 | 1000 |
- 이진수 계산 방법이 궁금하시다면 해당 글을 참조해주세요. 이진수에 대하여 자세히 알아보기
컴퓨터는 음수를 어떻게 표현할까요?
컴퓨터는 2의 보수를 통해 음수와 양수를 표현합니다.
- 2의 보수를 구하는 순서는 아래와 같습니다.
- 1의 보수를 구합니다.
- 1의 보수에 1을 더한 것이
2의 보수입니다.
- 1의 보수는 모든 이진수를 뒤집습니다.
ex) 1001 => 0110 - 2의 보수는 구해진 1의 보수에 +1을 더합니다.
ex) 0110 + 1 = 0111
| 2진수 | 1의보수 | 2의보수 |
| 1001 | 0110 | 0111 |
| 1101 | 0010 | 0011 |
| 0001 | 1000 | 1001 |
- 부호비트(Most Significant Bit : MSB) 숫자체계에서 보통 2진수의 맨앞 비트를 양수를 판별하기 위한 부호로 사용합니다.
- 실제 프로그래밍 언어들은 맨 앞의 비트는 음, 양수를 위해서 사용합니다. 참고자료: 프로그래밍 언어에서 2의 보수
0과 1로 문자를 표현하기.
사람이 언어를 컴퓨터가 읽을 수 있도록 문자 집합을 제공합니다.
- 컴퓨터는 문자를 읽기 위해 여러
문자 집합방식을 지원합니다. - 컴퓨터가 알도록
문자를 0과 1로 변환하는 것을문자 인코딩라고 합니다. - 반대로 사람이 알도록 컴퓨터가
문자로 변환하는 것을문자 디코딩라고 합니다.
ASCII (아스키 코드)

- 아스키 코드는 단어당 1byte로
1비트의 에러 검출을 위한 패러티 비트(parity bit)와7비트의 표현 가능 비트를 가졌습니다. - 128개의 문자를 표현가능합니다.
- 하나의 단어에
1byte를 차지한다는 것을 안다는 것이 제일 중요합니다!!.
EUC-KR
한글을 지원하는 문자 집합을 제공합니다.
ASCII(아스키코드)의 표현 가능한 문자 수로는 한글을 표현하기에 턱 없이 부족하여, 등장한 인코딩 방식입니다.
- 한글은 음절 하나에 초성, 중성, 종성의 조합으로 이루어져 있습니다.
ex) 강, ㄱ(초성), ㅏ(중성), ㅇ(강성) - EUC-KR은 완성형 인코딩 방식으로 KS X 1001, KS X 1003이라는 문자 집합을 기반합니다.
- 한 단어당 2byte의 크기를 차지합니다.
- 뷁, 꿻, 믢 같은 문자는 지원하지 않습니다.
유니코드(UTF-8, UTF-16)
UTF는 유니코드(문자 집합)를 사용하여 통일된 표준 인코딩 방식을 말합니다.
다국어를 지원하기 위해서 각 나라의 인코딩을 모두 알아야 하는 번거로움을 해결하기 위해 등장한 것이 유니코드입니다.
- 가변형 인코딩 방식을 가집니다(1byte ~ 4byte)
- 한글 데이터는 3byte 코드 포인트 그룹에 속한다고 할 수 있습니다.
| 첫 코드 포인트 | 마지막 코드 포인트 | 1바이트 | 2바이트 | 3바이트 | 4바이트 |
| 0000 | 007F | 0XXXXXXX | |||
| 0080 | 07FF | 110XXXXX | 10XXXXXX | ||
| 0800 | FFFF | 1110XXXX | 10XXXXXX | 10XXXXXX | |
| 10000 | 10FFF | 11110XXX | 10XXXXXX | 10XXXXXX | 10XXXXXX |
"루"의 UTF-8로 인코딩된 이진수명 찾아보기
- 루 의 유니코드는 U+B8E8입니다.
- B8E8은 3번째 코드 포인트에 속합니다.
- B는 1011, 8은 0100, E는 1110
1001 0100 1110 0100입니다.- X 자리에 대입하게 되는데요.
- X 자리는 총 16자리 수를 표현할 수 있습니다. 즉 16비트이며, 위에서 구한 2진수 개수와 동일합니다.
- 이 내용을 대입합니다.

- 1110XXXX 10XXXXXX 10XXXXXX 에서 1001 0100 1110 0100 값을 대입하여 11101001 10010011 10100100(2) 라는 값을 가지게 됩니다.
긴 글 읽어주셔서 감사합니다!
'ComputerScience > 컴퓨터 구조' 카테고리의 다른 글
| [컴퓨터 구조] 메모리와 캐시 메모리 (4) | 2024.08.30 |
|---|---|
| [컴퓨터 구조] CPU 성능 상향 기법 (0) | 2024.08.29 |
| [컴퓨터 구조] CPU의 작동 원리 (1) | 2024.08.28 |
| [컴퓨터구조] 명령어에 대해서 알아보자. (0) | 2024.08.21 |
| [컴퓨터구조] 큰 그림에서 보는 컴퓨터 구조 (0) | 2024.04.17 |
