본문 바로가기
Computer Science/컴퓨터 구조

[컴퓨터 구조] Chapter 02 데이터

by BrickSky 2023. 11. 7.

0과 1로 숫자를 표현하는 방법

1) 정보 단위

컴퓨터는 0과 1만 이해할 수 있다. 0과 1을 나타내는 가장 작은 단위를 비트라고 한다.

1비트는 0 또는 1, 두 가지 정보를 나타낼 수 있다. 즉, 2ⁿ을 나타낼 수 있다.

 

비트, 바이트, 킬로바이트, 메가바이트, 기가바이트, 테라바이트는 아래의 표로 정리할 수 있다.

1바이트(1byte)  8비트(8bit)
1킬로바이트(1kB) 1,000바이트(1,000byte)
1메가바이트(1MB) 1,000킬로바이트(1,000kB)
1기가바이트(1GB) 1,000메가바이트(1,000mMB)
1테라바이트(1TB) 1,000기가바이트(1,000GB)

 

2) 이진법

이진법은 0과 1만을 사용하지만 1보다 큰 수를 만들 수 있다.

숫자가 1을 넘어가는 시점에서 자리 올림을 하는 것을 통해 큰 수를 만들 수 있다.

우리는 일반적으로 10진수를 사용하는데, 아래의 표와 같이 1을 기준으로 바뀌는 것을 알 수 있다.

십진수  이진수
1 11
2 10
3 11
4 100
5 101
6 110
7 111

 

이진수의 음수 표현

간단하다. 2의 보수를 사용하면 된다. 2의 보수란 0과 1을 바꾸고 1을 더해주면 끝난다.

 

11의 보수를 표현해 보자.

1 1

0과 1을 바꾸자.

0 0

1을 더하자.

0 1

 

그러나! 1011과 0101의 보수는 착각할 수 있다. 0101의 보수는 1011이기 때문이다.

컴퓨터는 이 수가 양수인지 음수인지 체크하기 위해 플래그라는 기능을 사용한다.

추후 플래그에 관해 공부하겠지만, 간단히 요약하자면 중앙 처리 장치에 내장되어 있는 상태 레지스터와 관련된 정보 가운데 하나로. 가장 최근에 수행된 연산이 음수인 경우에 1의 값을 가진다.

 

3) 십육진법

이진법을 활용해서 숫자를 나타낼 수 있지만, 수가 큰 경우 이진법으로 수를 나타내기는 불편하다.

이때 사용할 수 있는 게 십육진법이다. 십육진법은 1을 넘어가는 시점에 자리 올림을 하는 이진법과 달리 15를 넘어가는 시점에 자리올림을 하는 숫자 방식이다.

십진수 0 1 2 3 4 5 6 7 8
십육진수 0 1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16 17 18
9 A B C D E F 10 11 12

 

십육진수를 이진수로 변환하기

간단하다.

1A2B라는 십육진수를 이진수로 바꿔보자면,

1은 이진수로 0001이고, A는 1010이고, 2는 0010이고, B는 1011이다.

즉 1A2B를 이진수로 나타내면 0001101000101011이다.

반대로 이진수를 십육진수로 변환할 수도 있다.

이진수를 십육진수로 변환하기

십육진수를 이진수로 변환한 것과 반대과정으로 숫자를 4개 단위로 끊고 바꿔주기만 하면 된다.

11010101을 예로 들자면, 1101과 0101로 나눌 수 있다. 1101은 D이고 0101은 5이기에 →D5가 된다.

 

 

0과 1로 문자를 표현하는 방법

1) 문자 집합과 인코딩

컴퓨터가 인식하고 표현할 수 있는 문자의 모음을 문자 집합이라고 한다.

컴퓨터는 문자집합에 있는 문자는 이해하지만, 반이대로 문자집합에 없는 문자는 이해하지 못한다.

 

0과 1로 바꾸는 과정을 통해 컴퓨터가 이해할 수 있도록 바꿔주는 과정을 문자 인코딩이라고 한다.

인코딩의 반대 과정, 즉 0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정을 문자 디코딩이라고 한다.

 

2) 아스키 코드

그냥 표를 보면 될 듯하다.

 

3) EUC-KR

한국어를 해당 아스키코드 표가 전부 표현할 수 없다는 한계를 갖고 있다.

영어는 알파벳으로 쭉 이어 쓰면 단어가 되지만 한글은 초성, 중성, 종성을 나누어 조합하는 방식이었기에 한글 인코딩을 위해 EUC-KR이 탄생했다.

 

한글 인코딩은 두 가지 방식이 있는데 완성형 인코딩 방식과 조합형 인코딩 방식이다.

완성형 인코딩 방식은 초성, 중성, 종성의 조합으로 이루어진 단어로 완성된 하나의 글자에 고유한 코드를 고유하는 방식이다. 예를 들어 ‘가’는 1. ‘나’는 2. 이런 식으로 인코딩한다.

반면 조합형 인코딩 방식은 초성을 위한 비트열, 중성을 위한 비트열, 종성을 위한 비트열을 할당하여 각각을 조합하는 방식이다. ‘강’의 경우 ‘ㄱ’ + ‘ㅏ’ + ‘ㅇ’으로 구성되며 각각 0010 + 0011 + 0001 00011로 이루어진다.

 

* EUC-KR은 완성형 인코딩 방식의 대표적인 예이다.

 

4) 유니코드와 UTF-8

유니코드는 다양한 한글을 포함하여 특수문자, 화살표나 이모티코도 코드로 구현할 수 있는 것이다.