공머씨의 블로그
내가 공부한 논리회로 6. Arithmetic Operations 1(사칙연산1) 본문
1.3단원을 공부할 차례입니다.
1.3단원에서는 사칙연산과 보수의 개념에 대해 공부합니다.

10진수의 덧셈 부터
2진수의 덧셈, 8진수의 덧셈, 16진수의 덧셈 개념을 알아보고 뺄셈을 알아봅니다.
11. 각 진법의 덧셈을 알아보겠습니다.
11-1. 첫 번째로 십진수의 덧셈을 알아보겠습니다.
자세한 설명까지 하겠습니다.?????? 왜????
>> 우리가 유치원 때부터 지금까지 자리를 올린다는 것은 알고 있었지만 다른 진법에 그대로 적용시킬 만큼 논리적으로 생각한 경우는 거의 없을 것입니다.

위와 같이 자릿수를 높이는 것을 Carry라고 합니다.
10진수의 경우 하나의 자리에 올 수 있는 숫자가 0~9이기 때문입니다. 10 이상부터는 십의 자리에 1을 올려주면 십의 자리에서는 1이지만 1의 자리에서 보면 10이 됩니다.
십의 자리에서는 아래 그림과 같은 과정이 일어납니다.

자리올림의 개념을 논리적으로 이해하고 넘어가시길 바랍니다.
자리올림의 개념을 안다면 어떤 진법의 덧셈도 할 수 있습니다.
11- 2. 2진수의 덧셈에 대해서 알아보겠습니다
쉬운 경우

그냥 더 해주면 됩니다.
여기까지는 오히려 10진법보다 계산이 쉽습니다. 자리올림이 발생하지 않기 때문이죠
다음과 같이 검산을 하면 됩니다.
10110은 십진수로 12이고 00111은 십진수로

헷갈리는 경우 (처음 해보는 자리올림이라서 헷갈릴 수 있지만 몇 번 연습하면 쉬워집니다.)

각 자리에서 1+1이 나왔을 때 2라고 작성하면 안 됩니다. 이진수에서는 0과 1만 존재하기 때문에
1+1 이 나왔을 때는 다음 자릿수에 1을 올려주고 (carry 해주고) 그 자릿수에 0을 작성해주어야 합니다
만약 다음과 같이 3이 나온 경우 (오른쪽에서 세 번째 자리를 보시면 됩니다.)

3은 이진수에서 11이므로
다음 자릿수에 1을 올려주고 1이 남게 되는 것입니다.
다음과 같이 검산해볼 수 있습니다.

십진법에서 하나의 자리에 10이 올 수 없고 9 다음에 높은 자리로 1이 올라가고 그 자리는 0이 되는 것처럼 이진법도 마찬가지로 하나의 자리에 올 수 있는 최대의 숫자는 1입니다.
11-3. 8진법의 덧셈을 해보겠습니다.
8진수는 0에서 7까지만 존재하고 7 다음에는 자리올림을 해주어서 10이 됩니다.

일의 자리부터 살펴보면 5+7은 10진법으로 는 일단 12입니다.
12가 8진법으로는 14입니다.
이를 잘 파악한 뒤 다음 자리로 자리올림을 해주면 되는 것입니다.
그래서 다음 자리로 1이 올라가고 (carry) 일의 자리에는 4가 그대로 남게 됩니다.

이제 십의 자리를 살펴보겠습니다.
십의 자리에는 2와 5 그리고 일의 자리에서 올라온 1까지 모두 더하면 10진법으로는 8입니다.
8진법에서는 7 다음의 수이기 때문에 10으로 작성해주면 됩니다.

그러면 100의 자리에 1이 올라갑니다.(carry)그리고 십의 자리에 0이 남게 됩니다.
마지막으로 100의자리에 있는 수를 계산하면 4+2+1이 됩니다.
7 그대로 써주면 됩니다.
>> 714가 아니라 704가 정답입니다.
자리올림의 개념만 제대로 알고 각 진법이 어떤 수들로 이루어져 있고 이를 십진법에서 어떻게 나타내는지 알면 어렵지 않습니다.
11-4. 다음은 16진법의 덧셈을 해보겠습니다.
일의 자리에서 5+6은 10진법으로 11입니다.
11을 16진수로는 B라고 표현하므로 일의 자리에 B를 작성해주면 됩니다.
그리고 최대 숫자인 F를 넘지 않았으므로 십의 자리에는 숫자가 올라가지 않습니다.(Carry가 없습니다.)

십의 자리에서는 A와 9를 더합니다.
십진법으로 생각해보면
이는 10+9=19입니다.
그림(16진수와 10진수 대조표)
19는 16진수로 13입니다.
그래서 백의 자리에 1이 올라가고 십의 자리에 3이 남게 됩니다.

백의 자리에서 보면 십의 자리에서 올라온 1과 2,3 이 더해져서 십진수로 6이 됩니다.
16진수로도 6이므로 6으로 작성해주면 됩니다.
아래와 같은 결과를 얻게 됩니다.

10진수의 뺄셈부터 2진수의 뺄셈, 8진수의 뺄셈, 16진수의 뺄셈을 공부하겠습니다.
12.각 진법의 뺄셈을 알아보겠습니다.
12-1. 10진수의 뺄셈을 살펴보겠습니다.
일의 자리에서는 손가락으로 계산할 수 있습니다.
십의 자리에서 문제가 발생하는데 2에서 9를 뺄 수 없으므로
백의 자리에서 1 즉 십의 자리로 오면 10 일의 자리 관점에서 보면 100이 되는 숫자를 빌려옵니다
이것을 Borrow 빌린 수라고 합니다.
그렇게 빌려오면 십의 자리에서는 다음과 같은 과정이 일어납니다.

그리고 백의 자리에서 300에서 십의 자리로 10 (일의 자리 관점에서 100)을 빌려주어서
200-100
의 과정이 일어나게 됩니다.

12-2. 2진수의 뺄셈
쉬운 경우

복잡한 경우 (Borrow 가 있는 경우)
일의 자리에서 0-1을 못하므로 십의 자리에서 1을 빌려옵니다. 그런데 십의 자리에다 빌리기도 마땅치 않아 , 처음부터 100의 자리에서 빌려옵니다.
borrow가 생기면 십의 자리 위에는 2를 써줍니다.

예를 들어 십진수에서 뺄셈을 할 때
각 자리에 올 수 있는 최댓값이 9 일 때, 한자리 아래로 숫자를 내려주면 10이 되는 형태라고 생각하시면 됩니다.

십의 자리에서는 중간 수수료 같은 1을 받습니다.
Borrow가 생겨서 빌려온 1과 윗줄의 1을 더합니다. 그리고 2에서 1을 빼면 됩니다.
백의 자리~ MSB까지는 borrow 없이 간단하게 계산해주면 됩니다.
다음과 같은 결과가 나옵니다.

12-3. 8진수의 뺄셈에 대해서 알아보겠습니다.
일의 자리에서 5-7을 못하므로
십의 자리에서 숫자를 빌려옵니다. 여기서도 못 빌리니까 백의 자리까지 넘어가서 빌리고 빌려옵니다.
그래서 일의 자리에서 최대 숫자보다 1 큰 8과 5를 더한 뒤 그 숫자에서 7을 뺴주게 되는 것입니다.

위 과정을 거쳐 일의 자리에 남은 숫자는 6입니다.
이제 십의 자리로 가보겠습니다.
80만큼 빌려와 놓고 10만큼 일의 자리에게 떼어주었으니
빌린 것 중에서 쓸 수 있는 것은 70입니다.
십의 자리에서 아래와 같은 과정이 일어납니다.
그래서 십의 자리 숫자는 7이 됩니다.

백의 자리에서는 한번 빌려주었으므로 4-2가 아닌 3-2가 됩니다.
그래서 백의 자리에는 1을 작성해주면 되는 것입니다.

12-4. 16진수의 뺄셈에 대해서 알아보겠습니다.
일의 자리에서 5-6은 불가능하므로 십의 자리에서 빌려옵니다.
최대 숫자인 16을 빌려와서 5에다가 더한 다음 21-6을 해줍니다. 그러면 15가 나오는데
십진수 15를 16진수로는 F라고 표현하므로 일의 자리에 F를 작성해주면 됩니다.

십의 자리에서는 백의 자리에서 한번 빌리고 1/16을 일의 자리에 도로 빌려주었으므로
16+9를 한 뒤 이 숫자에 10(16진수로 A)을 빼주면 됩니다.
그러면 십진수로 14가 나오는데 이를 16진수로 바꾸면 E가 나옵니다.
그래서 십의 자리에는 E를 작성해주면 됩니다.

이제 백의 자리 뺄셈을 해보겠습니다.

십의 자리에 한번 빌려주었으므로 남은 숫자는 2입니다. 2-2=0이므로 백의 자리에는 0을 작성해주면 됩니다.
그래서 답은 EF가 됩니다.
다음 포스팅에서는 2,8,16진수의 곱셈과 나눗셈에 대해 알아보겠습니다.
'내가 공부한 3학기 전공 > 내가 공부한 논리회로 설계' 카테고리의 다른 글
내가 공부한 논리회로설계8. Complement Number2. (0) | 2020.04.12 |
---|---|
내가 공부한 논리회로 설계7-Operations(사칙연산 2),Complement Number (0) | 2020.04.12 |
내가 공부한 논리회로 5. Number system 3(수 체계-conversion between Number) (1) | 2020.03.27 |
내가 공부한 논리회로 4. Number system 2(수 체계-conversion between Number) (0) | 2020.03.27 |
내가 공부한 논리회로 3. Number system 2(수 체계-conversion between Number) (0) | 2020.03.18 |