1.1 Digital System and Switching Circuit

* Digital System 이란?

Computation, data processing, control, commnicaton, measurement 등의 분야에 쓰이는 시스템을 말합니다. Analog system보다 정확성과 신뢰성이 높은 장점이 있습니다.

 

* Binary Digit

Binary는 0과 1의 값을 갖는 진법으로 각 자리 숫자를 "bit"라 부릅니다. 숫자의 표기가 0과 1로 이루어져 있어서 전자기기를 표현하는데 적합합니다. 예를 들어 스위치가 켜졌을 때를 1, 꺼졌을 때를 0으로 표기할 수 있습니다.

* Switching Circuit

- Combination circuit(조합 회로): output이 오직 현재의 input에만 영향을 받습니다. 즉, output = f(input)

- Sequential circuit(순서회로, 순차 회로): Combination circuit 과는 다르게 현재의 input과 과거의 input 모두 영향을 받음. 이를 "memory"소자를 갖는다고 표현합니다.

(output, next_state) = f(intput, current_state)


1.2 Number Systems and Conversion

* 위치 표기법(Positional notation)

각 자리 숫자는 계수 곱의 합으로 구성됩니다. 만약 984.7810을 표현하고자 하면,

983.7810 = 9*10^2 + 8*10^1 + 3*10^0 + 7*10^-1 + 8*10^-2입니다. 2진법에서 10진법과 마찬가지로 표현이 가능합니다. 1011.112를 위치 표기법으로 표현하면,

이처럼 1보다 큰 어느 기저(radix or base)든 간에 위치 표기법으로 진법이 표현이 가능합니다. 기저 R에 대해서 power series로 전개가 가능합니다. 예를 들어 기저가 8인 8진수의 표기법은

147.38 = 1*8^2 + 4*8^1 + 7*8^0 + 3*8^-1 = 64 + 32 + 7 + 3/8 = 103.37510 입니다. 그리고 모든 기저는 서로 변환이 가능한데 예를 들어서 14710를 위치 표기법으로 표현하면, 1*10^2 + 4*10^1 + 7*10^0인데, 이를 2진수로 바꾸려 할 때, 모든 계수와 기저를 2진화 시킵니다. (1)*(1010)2 + (100)*(1010)1 + (111)*(1010)0으로 나타내지는데, 이를 계산하면 100100112가 됩니다. 우리가 아는 2로 나눈 나머지 값을 이어붙이는 표기로도 표현이 가능합니다.

2진법의 경우 digital system을 이해하기는 편리하지만 1과 0으로만 이루어졌기 때문에 숫자가 조금만 커져도 길이가 너무 길어지는 단점이 있습니다. 그러한 이유로 16진수를 많이 사용하게 되는데 기저가 10 이상으로 넘어가게 되면 10 이상의 숫자를 표현해야 합니다. 그렇기 때문에 10부터 알파벳을 하나씩 부여하게 됩니다. 즉 10은 A이고 11은 B 이런 식으로 진행하게 됩니다. Digital system에서 16진법(Hexadecimal)을 제일 많이 씁니다. 그 이유는 16진수와 2진수는 서로 변환하기 편리하게 되어있기 때문입니다. 16진수에서 각 자리수는 2진수의 4자리로 변환됩니다. 변환된 2진수를 이어붙이면 동일한 값을 갖는 2진수 표기법이 됩니다. 예를 들어, A2F16을 이진수로 바꿔보면

반대로 2진수 또한 16진수로 간단하게 변환이 가능한데 뒤에서부터 4개씩 끊어서 변환해주면 됩니다. 예를 들어,

 

* 10진수 값을 기저 R로 나눗셈 방식을 통한 변환

10진수 N 값에 대하여 기저 R로 변환하고자 할 때 나눗셈 방식을 이용해서 변환할 수 있습니다. N에 대하여 R로 나누어서 나머지 값이 기저 R에 대한 계수 값이 됩니다.

이 과정을 계속 진행해나가다 보면 최종적으로 an의 값을 얻을 수 있습니다. 이 모든 값을 이어붙이면 기저 R에 대한 값으로 표기될 것입니다. 반대로 소수점의 경우에는 나누어주는 것이 아닌 곱셈을 통해서 표현할 수 있는데, 기저 R 만큼 곱해준 뒤 소수점을 제외한 부분이 계수가 됩니다.

이 과정을 반복하고 각 계수를 이어붙이면 동일하게 소수점 아래의 표현을 구할 수 있습니다.

 

 

 


1.3 Binary Arithmetic

Digital system에서의 산술연산들은 2진법으로 계산합니다. 그 이유는 10진수 계산보다 2진수로 계산하는 것이 논리회로 설계에서 더 용이하기 때문입니다. 2진수 산술연산은 10진수의 올림(carried out)과 동일하게 수행됩니다.

* 덧셈 (Addition)

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0

           10 (다음 열에 1이 올림 된다.)

* 뺄셈 (Subtraction)

0 - 0 = 0

0 - 1 = 1 (다음 열에서 빌려온 1이다)

1 - 0 = 1

1 - 1 = 0

* 곱셈 (Multipliation)

0 * 0 = 0

0 * 1 = 0

1 * 0 = 0

1 * 1 = 1

* 나눗셈 (Division)

 


1.4 Representation of Negative Numbers

현재까지 예제로 다뤄온 수는 모두 부호가 없는 양수들만 다뤘습니다. 하지만 컴퓨터에서는 음수와 양수를 표현하기 위해 부호가 있는 숫자를 별도로 표기해야 합니다. 부호가 있는 2진수는 가장 첫 번째 bit를 부호 bit로 지정하게 됩니다. 첫 번째 bit가 0일 경우 양수, 1일 경우 음수입니다. 부호가 있는 표기법에는 여러 가지 방법이 존재합니다.

- Sign and magnitude system(부호와 크기 표현 방법)

첫 번째 bit를 부호 비트로 두고 나머지 뒤의 bit를 크기로 두는 표현 방법입니다. 이 방법은 기저가 r이고 n 자리 bit라 했을 때,

의 범위를 갖습니다.

- True and complement system

이 방법은 1's complement system과 2'scomplement system으로 나눠집니다.

1's complement system의 경우 C는 2n - 1이고 2's complement system은 C가 2n으로 계산합니다. 두 방법은 약간의 차이가 존재하는데 우선 표현할 수 있는 범위의 차이가 있습니다. 길이가 4인 음수 2진수를 표현한다고 가정했을 때, 표로 정리하면

위의 표를 봤을 때, 2's complement 방법을 사용했을 때 표현할 수 있는 숫자의 폭이 제일 넓은 것을 볼 수 있습니다. 그러한 이유로 대부분의 digital system은 2's complement 방식으로 표현을 합니다.

음수를 1's complement 형태로 표현하는 방법은 우선 해당 음수의 절댓값의 2진수로 표현하고 모든 비트를 반전시켜주면 됩니다. 예를 들어 -7의 경우에 절댓값은 0b0111로 표현됩니다. 이 값의 모든 비트를 뒤집으면 0b1000으로 -7을 표현할 수 있습니다. 2's complement 역시 1's complement와 동일한 과정을 거친 후 마지막에 1을 더해주면 됩니다. 0b0111에서 반전시켜주어 0b1000로만들어준 뒤 1을 더하면 0b1001로 표기됩니다.

 

+ Recent posts