CS 이론/학과 수업

논리회로 - 진수표현과 덧셈, 뺄셈, 보수

potatoo 2023. 6. 21. 16:09
728x90

먼저, 아래의 식을 보면서 10진수를 R진수로 바꾸는 과정을 보겠다.

620을 예로 들어보겠다. R을 5라고 한다면, 아래와 같고, 위의 수식에 대입해보면 N=620, R=5, a3,a2,a1 = 4, a0=0이다.

이렇게 된 수식에서 5를 나누면 나머지는 0이다 그럼 a0자리의 계수가 된다. 몫은 124이고 이 몫을 다시 5로 나누면 24가 되고 나머지는 4이다. 따라서 나머지 4가 a1이다. 또 24를 5로 나누면 나머지가 4이고 a2의 값이된다. 그리고 나머지인 4가 a3의 몫이 된다.

이 과정을 미지수로 표현한 것이 위의 수식들이고 R로 계속해서 나누는 과정을 반복하는 것이다.

그렇다면 소수는 어떨까?

 

소수 부분은 나누는것 대신에 반대로 곱셈을 하는 것이다. R^-1, R^-2, R^-3...임으로 계수를 얻으려면 R을 계속해서 곱해주는 것이다.

0.24를 예로 들어보자 똑같이 R=5로 한다.

0.24에 5를 곱하면 1.2가 되고 앞의 1이 R^-1의 계수가 된다. 그리고 1을 뺀 0.2가 되고 여기에 다시 R인 5를 곱하면 1.0으로 되고 R^-2의 계수가 1이 된다. 따라서 620.24라고 하면 4440.11이다.

이런식으로 진수 변환을 하고, 다음은 2진수 덧셈과 뺄셈 연산을 보겠다.

2진수 덧셈은 간단하다. 고려해야 할 것은 1+1의 경우 상위비트로 이동하는 carry를 고려해야한다는 것 외에는 덧셈에서 어려움이 없다.

뺄셈의 경우는 조금 헷갈릴 수 있다. 0-1을 빼는 경우 상위 비트에서 값을 빌려와야하기 때문에 borrow를 수행해야한다는 어려움이 있다.

하지만 10진수 사칙연산을 해온 사람들에게는 이해하는 것에 큰 어려움은 없을 것 같다.

예제를 보면서 이해하면 좋겠다.

덧셈의 예제를 보면 1+1의 경우 carry를 다음 비트로 올려주는 걸 볼 수 있다.

뺄셈의 경우는 0-1의 경우 상위 비트에서 값을 빌려오는데 0인 경우는 그 다음 자리에서 빌려오는 식으로 10진수 뺄셈과 같은 방식으로 움직인다.

 

그 다음은 보수의 개념에 대해서 알아본다.

보수는 아날로그와 달리 제한적인 용량을 가지는 디지털로 바꾸는 과정에서 음의 부호를 표현하기 위한 방법이다.

2의 보수의 경우 10000 = 16 0001 = 1일때 16에서 1을 빼는 것은 borrow하는 과정이 어렵다. 그래서 이를 쉽게 하고자 1111=15에서 1을 빼고 다시 1을 더해주는 식으로 사용하는것이 편하다.

1111-0001 = 1110 + 1 = 1111

12의 경우 1100인데 여기서 0010을 뺀다고 했을 때는 12-2=10이다. 이를 진수로 볼 때는 2를 보수를 취해서 1110이 되고, 이를 1100과 더하면, (1)1010로 되어서 넘어간 비트는 무시함으로 10이라는 값을 얻을 수 있다.

728x90