Computer Science/IGCSE Computer Science

1.1.1 Binary Systems 컴퓨터의 이진법 체계

공부할 것이 많구나 2020. 3. 15. 15:35

CS

Candidates should be able to:
• recognise the use of binary numbers in computer systems
• convert positive denary integers into binary and positive binary integers into denary (a maximum of 16 bits will be used)
• show understanding of the concept of a byte and how the byte is used to measure memory size
• use binary in computer registers for a given application (such as in robotics, digital instruments and counting systems)

 

1. 컴퓨터는 왜 2진법을 사용하는가?

컴퓨터를 공부하기 위해 우리는 컴퓨터의 정보 표현 체계를 배워야한다. 

컴퓨터는 전류가 흐르는 상태인 'On', 전류가 흐르지 않는 상태인 'Off'를 이용해 정보를 표현한다.

On과 Off는 각각 참과 거짓, Yes와 No를 나타낸다. 

이런 체계는 2진법을 사용해 표현할 수도 있다. 1은 On, 0은 Off를 나타내도록 하는 것이다. 

 

우리 인간은 10진법을 사용하는데, 이는 인간의 손가락이 10개이기 때문이라고들 한다.

그렇다면 컴퓨터는 왜 2진법을 사용하는가?

답은 아까 말했던 On과 Off에 있다. 

컴퓨터라는 기계는 어디까지나 전기적 신호를 통해 의미를 전달한다.

그러므로 컴퓨터가 의미를 구분할 수 있는 최소 단위는 On/Off이다.

 

누군가는 전기 신호의 크기에 따라 1은 1V(volt)로, 2는 2V로 표현하는 식의 10진법을 컴퓨터에 도입하자고 제안할 수 있다. 문제는 전기회로의 전압이 불안정할 경우 데이터 송수신 과정에서 노이즈가 발생해 1.5V 같은 것이 전달될 수 있다는 것이다. n진법에서 n이 클수록 이런 문제가 발생할 확률도 높아질 것이다. 

이런 물리적인 이유로 컴퓨터는 2진법을 사용한다. 1958년 러시아에서 3진법 컴퓨터를 개발했으나 널리 쓰이지 못했다. 최근에는 다시 3진법이 주목을 받고 있다는 소식을 들었는데, 그래도 우리는 일단 컴퓨터는 2진법을 사용한다고 전제하자. 

 

On/Off라는 비연속적인(discrete)인 정보 표현 방식은 나중에 디지털과 아날로그를 공부할 때도 다시 등장하니, 꼭 잊지 말자. 

 

 

2. 2진법 변환

진법 변환은 다들 해보았으리라 생각하므로 간단히 짚고 넘어가겠다. 

 

10진수의 정수 부분을 2진수로 변환하는 방법은 다음과 같다.

① 10진수의 정수 부분을 2진수의 밑인 2로 나누어 몫과 나머지를 구한다.

② 몫이 더 이상 나누어지지 않을 때까지 2로 계속해서 나눈다.

③ 각 단계의 나머지를 역순으로 나열한다. 

 

   19 (10) = 10011(2)

 

10진수의 소수 부분을 2진수로 변환하는 방법은 다음과 같다.

① 10진수의 소수 부분에 2진수의 밑인 2를 곱한다.

② 곱셈 결과로 소수 부분이 0이 될 때까지 밑수 2를 계속 곱한다.

③ 각 단계에서 발생하는 정수 부분(자리올림)을 순서대로 나열한다. 

 

    0.125 (10) = 0.001 (2) 

 

사실 컴퓨터에서 정수를 나타내기 위해 주로 사용하는 방식은 2의 보수라는 방식이다.

https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%98

2의 보수 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 2의 보수(--補數, 영어: two's complement)란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다. 2의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급된다. 주어진 이진수보다 한 자리 높고 가장 높은 자리가 1이며 나머지가 0인 수에서 주어진 수를 빼서 얻은 수가 2의 보수이다. 혹은 주어진 이진수의 모든 자리의 숫자를 반전(0을 1로, 1을 0으로)시킨 뒤 여기에 1을 더하면 2의 보수를 얻

ko.wikipedia.org

컴퓨터에서 실수를 나타낼 때도 부동 소수점 방식이라는 게 주로 사용된다. 

https://ko.wikipedia.org/wiki/%EB%B6%80%EB%8F%99%EC%86%8C%EC%88%98%EC%A0%90

부동소수점 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 초기의 전기기계식 프로그래밍 가능한 컴퓨터 Z3에는 부동소수점 산술 기능이 포함되었다. (뮌헨의 국립 독일 박물관) 부동소수점(浮動小數點, floating point) 또는 떠돌이 소수점[1] 방식은 실수를 컴퓨터상에서 근사하여 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로, 유효숫자를 나타내는 가수(假數)와 소수점의 위치를 풀이하는 지수(指數)로 나누어 표현한다. 컴퓨터에서는 고정

ko.wikipedia.org

컴퓨터에서 연산을 수행하는 방식도 우리가 연산을 하는 방식과는 조금 다르다. 

정수 표기 방식, 실수 표기 방식, 연산 방식 모두 중요하지만 여기서 다루기엔 좀 지루하기도 하고, 무엇보다 여러분들이 프로그래밍 언어를 배우지 않는 이상은 공부할 필요성을 제대로 못 느낄 것 같으니 그냥 링크를 걸어두겠다. 

http://contents.kocw.or.kr/document/lec/2011_2/dunksung/YouGyunA/03.pdf

 

3. 비트(bit)와 바이트(byte), 그리고 워드(word)

 

비트(bit, binary digit)는 컴퓨터에서 정보를 나타내는 최소 단위로 2진수 0 또는 1을 의미한다.

따라서 n개의 비트로 표현할 수 있는 정보는 2^n개이다.

이러한 비트가 8개 모이면 바이트(byte)가 된다. 예를 들어 10100011은 한 바이트이다. 

바이트는 문자를 나타내는 최소 단위로, 보통 영문자나 숫자, 특수문자는 1바이트로 표현하고, 한글이나 한자는 2바이트로 표현한다.

한 바이트가 8비트로 구성되는 이유는 영어 한 글자를 표현하는데 ASCII 코드 방식으로 8비트가 요구되기 때문이다.

ASCII 코드는 예전에 수업에서 언급한 적이 있어 다들 기억하고 있어야 하지만, 다음에 배울 것이니 지금은 몰라도 된다. 

비트는 "b"로, 바이트는 "B"로 나타낸다. 

워드(word)는 명령어나 연산을 처리하는 기본 단위로, 기억장치에 한 번 접근하여 얻을 수 있는 데이터의 양을 나타낸다. 

컴퓨터의 종류에 따라 워드 크기는 2바이트, 4바이트, 8바이트 등으로 다양하다. 

 

 

정보량의 단위 

Byte

1 Byte = 8bit

KB (KiloByte)

1 KB = 1024 Byte

MB (MegaByte)

1 MB = 1024 KB

GB (GigaByte)

1 GB = 1024 MB

TB (TeraByte)

1 TB = 1024 GB

PB (PetaByte)

1 PB = 1024 TB

EB (ExaByte)

1 EB = 1024 PB

ZB (ZetaByte)

1 ZB = 1024 EB

YB (YottaByte)

1YB = 1024 ZB

 

4. 레지스터와 2진법 

 

레지스터는 데이터 접근 속도가 매우 빠른 메모리 회로들의 집합이다.

여기서는 그냥 정보를 담고 있는 메모리로 이해해도 충분하다.

레지스터의 수는 한 컴퓨터에 수십 개 정도가 있고 한 레지스터의 용량은 컴퓨터의 워드 크기와 일치한다.

예를 들어, 한 워드의 크기가 32bit인 컴퓨터에서 하나의 레지스터의 크기는 32bit가 된다. 

(이 기회에 본인의 컴퓨터 비트를 한 번 확인해보시라. 대부분 64bit일 것이다.)

 

8bit로 예를 들어 레지스터에 대한 설명을 계속해보겠다. 

1

0

1

0

1

0

1

1

보통 레지스터는 위의 그림처럼 표현한다. 

그리고 각 칸은 bit의 값을 표현하고 있다.

만약 로봇을 이용해서 자동차를 색칠하는 공장이 있다면, 자동차의 상태나 페인트의 상태에 대한 정보를 담는 공간이 필요할 것이다. 이때 다음과 같은 레지스터가 이 로봇안에 있을 것이다. 

 

1

0

1

0

1

0

1

1

Car is present?

Car in correct position?

Spray Gun contains paint?

Apply Metalic Finish?

Use Black Paint

Use Red Paint

Use White Paint

Use Blue Paint

이 레지스터는 "A car is present, in the correct position, the spray gun has enough paint and it will use Red paint to spray the car" 를 의미한다.

 

레지스터는 2진법이 어떤 식으로 사용되는지를 보여주기 위한 것이니, 벌써부터 깊게 이해할 필요는 없다. 

레지스터는 나중에 컴퓨터 내부를 공부하며 좀 더 배울 기회가 있다.