0. 공부를 시작하며.
디지털 공학이란 무엇을 배우는 것일까.
먼저 디지털이랑 아날로그의 차이에 대해서 필자는 고등학교 때부터 지겹도록 들어왔다.
"불연속과 연속" , "전기신호와 자연신호" 당장 생각나는건 이 정도인 것 같다.
결국 내가 이해한 디지털이란 "불연속적인 신호로 컴퓨터가 처리할 수 있는 방식" 이다.
그렇다면 불연속적인 신호로 컴퓨터가 처리하기에 가장 간편하고 단순한 방식은 무엇일까?
바로 두가지 요소. "0"과 "1" 이라는 신호만 사용하는 것이다. (0과 1을 무엇으로 사용할지는 자기 맘이다.)
이상으로 간단한 디지털에 대한 이해가 끝난 이후엔 디지털의 불연속 세상을 이해하기 위한 용어를 알아야 한다.
1-1. 디지털 숫자의 체계
위의 그림은 그냥. 수와 숫자에 대한 정의를 살짝 읊은 것이다. 우리가 평소에 사용하는 수는 숫자로 이루어져 있다.
이 때 우리가 디지털 세상에서 사용할 숫자는 digit
그 중에서도 0과 1만 사용하는 이진법을 binary
평소 우리가 사용하는 10진법은 decimal
즉 이러한 용어를 이용하여 학습 목표를 말해보자면, "우리가 일상에서 사용하는 수(number)인 decimal number 을 binary number로 변환해야 컴퓨터가 알아먹는다."
그래서 우리가 이러한 귀찮은 변환을 해서 얻는 이득이 무엇이길래?? 이렇게 컴퓨터를 설계한걸까.
명백하게 우리가 이러한 단순한 신호 체계를 사용하면서 얻는 장점이 있기 때문이다.
1. 디지털 시스템은 programmable 하다.
같은 하드웨어를 가지고 다양한 분야에서 사용할 수 있다.
2. 디지털 시스템은 reliable 하다.
우리가 시스템 내에서 에러를 찾아내거나 에러의 확률을 줄일 수 있다.
→이 모든 장점은 0과 1을 사용한다는 단순함에서 온다.
1-2. 수의 의미
다음은 우리가 사용하는 '수'에 대한 이해가 필요하다.
우리가 평소에 10진수로 표기해 사용하는 수는 어떤 의미를 가질까??
예를들어 7392 라는 10진수가 있다.
즉, 10^(자리수)로 각 자리가 표현되고, 그 앞에 붙는 계수가 우리가 읽는 10진수의 수 라고 해석할 수 있다.
→ 10진수란. 0~9까지의 '숫자(bit)'를 이용하여 만들어진 '수(number)'라고 해석할 수 있다.
이런식으로, 다른 base의 진법도 똑같이 표현할 수 있는데
base-5 number (4021.2)5 - 5진법
→ 0~4까지의 bit을 이용해 만든 number 체계.
base-8 number (octal number) (127.4)8 - 8진법
→ 0~7까지의 bit을 이용해 만든 number 체계.
등으로 표현할 수 있게 되었다.
그렇다면 우리에게 익숙한 10진법으로 표현하려면?????
간단하다. 그냥 우리가 위의 식처럼 표기한걸 모두 풀어서 더하면 10진법 표기가 된다.
즉 위의 예시로 들었던 (4021.2)5은 (511.4)10으로, (127,2)8은 (87.5)10으로 표기할 수 있다.
(한두번만 직접 써서 더해보면 바로 이해된다.)
1-3. 2진수와 기수변환
자 이렇게 우리가 사용하는 수의 체계에 대한 이해가 어느정도 되었다면, 가장 중요한 2진수에 대해서 알아볼 시간이다.
2진수는 우리가 알고 있듯이. 0과 1이라는 bit으로 만들어진 number 체계이다.
그렇다면 이 체계에서의 사칙연산도 할 줄 알아야 한다. (다른 진법도 원리는 마찬가지)
우리가 초등학생때 배운 사칙연산의 개념을 그대로 적용하면 된다.
(더할때 남는만큼 앞자리로 넘기고,, 뺄때 숫자가 부족하면 앞자리수에서 빌려오고,,)
곱셈은 0과 1만 사용하는 binary의 특성상 훨씬 간단하다.
자 이제부터는 Number-base conversion (기수변환)을 해볼것이다.
참고로 필자는 10진수에서 다른 진수로 변환하는 방법을 이 과목을 배우면서 처음 익혔다. (엄청 간단했던 건데,,)
일반적으로 우리는 10진수가 아닌 base-r number을 다른 base-r' number로 변환하기 위해서
1. base-r number 을 decimal number로 바꾸어준다.
2. decimal number로 표현된 수를 원하는 base-r' number로 변환시킨다.
의 과정을 거친다.
첫번재 과정인 r진수에서 10진수로의 변환은 위에서 이미 해봤다.
그냥 각 자리수에 맞는 수의 표현을 쭉 늘어놓고, 다 더하면 결국 우리에게 익숙한 decimal number가 등장한다.
두번째 과정에서 10진수를 우리가 원하는 r'진수로 바꿀 때 정수부를 구하는 방법과 소수부를 구하는 방법이 다르다.
이 과정은 예시를 보면서 이해하는 것이 빠르다.
먼저 정수부이다. example 1.1에서는 decimal number인 41을 binary number로 바꾸는 과정이 담겨있다.
위에서 말했듯이. 정수부를 conversion 할 때에는 바꾸자 하는 decimal number을 계속해서 나눠주기만 하면 된다!
41/2 하면 몫이 20 나머지가 1 남고, 그 몫을 다시 2로 나누면 몫이 10 나머지가 0남고, 그 몫을 다시 2로 ....의 반복이다.
이 과정을 몫이 0이 남을때까지 하면 된다. 그렇게 해서 구해진 나머지를 구해진 순서의 역순으로 나열하면 끝이다.
(이 간단한 과정을 난 낯설고 하기 싫다는 생각 하나때문에 2x살이 넘을때까지 진수변환을 못했다 ㅎㅎ)
소수부의 conversion은 정확히 정수부 conversion의 반대 행동을 하면 된다.
말 그대로. 바꾸자 하는 소수부에 r진수로 바꾸고자 하는 r을 계속해서 곱하는 것이다.
example 1.3과 같이. 0.6875를 바꾸자 할 때. 2진수로 바꾸어야 하니 2로 계속해서 곱해주면 정수부와 소수부로 나누어져서 나오게 된다.
이렇게 나온 정수부는 구해진 순서대로 쓸 수 있고. 그 순서의 나열이 2진수로 바뀌어진 결과값이다.
이 과정은 정수부를 바꿀 때 몫이 0이되는 지점같이 멈추는 선이 있는것이 아니라, 자신이 얻고자 하는 소숫점까지 반복해서 충분한 정확도를 얻어내는 것이다.
위의 과정은 곱하기 나누기만 할 줄 알면 어떤 수를 제시하더라도 다른 체계를 가진 수로 바꿀 수 있게 된다.
'디지털공학 > Chap 1.' 카테고리의 다른 글
Chap 1. 디지털 시스템과 2진수 (4) . Digital Systems and Binary Numbers (0) | 2022.01.07 |
---|---|
Chap 1. 디지털 시스템과 2진수 (3) . Digital Systems and Binary Numbers (0) | 2022.01.07 |
Chap 1. 디지털 시스템과 2진수 (2) . Digital Systems and Binary Numbers (0) | 2022.01.06 |