전공과목인 디지털 공학 수업내용을 복습하며 작성하는 글이다.
나는 작년에 컴퓨터 구조를 수강했기에
컴퓨터 공학의 선수과목인 디지털 공학을 듣는 것은 수월했다.
작년에 이해하려 무수한 노력을 들인 2진수와 카르노맵...등등
이번 학기 동안 머릿속에 확실하게 각인시킨다고 생각하면서 공부해야겠다.
2진수의 덧셈
2진수의 덧셈과 carry
2진수의 덧셈은 10진수의 덧셈과 비슷하다.
10진수의 덧셈의 경우 2+9=11 에서1을 올려주둣
2진수의 덧셈에서 1+1=10 에서 1을 올려준다.
여기서 올라가는 수를 carry라고 한다.
보수(Complement)
2진수의 뺄셈을 이해하기 위해서는 먼저 보수의 개념을 알아야한다.
r진법의 보수는 2가지가 존재한다.
- Diminished Radix Complement : (r-1)의 보수
- Radix Complement : r의 보수
ex) 10진수에서 보수는 10의 보수와 9의 보수가 존재한다.
Radix(기수) : 앞에서 배운 내용을 이용하면 Radix(기수)는 가중치에서 밑이 되는 수를 말한다. N진법에서 기수는 N이다.
ex) 2진법의 기수 : 2 / 16진법의 기수는 : 16
1. Diminished Radix Complement
굳이 한글로 표현하자면 감소된 기저 보수이다. 기저(base)와 기수(radix)의 정확한 차이를 모르겠다. 비슷한 뜻으로 쓰이는 것 같다. 이해하는데는 지장이 없으므로 넘어간다.
여기서 n은 자리수를 뜻한다.
공식을 외우기 보다는 단어의 뜻을 이해하는 편이 접근이 쉬울 것이다. 예를 들어 보겠다.
ex1) 2진법에서 1011의 (2-1)의 보수는 (1111)-(1011)=100
ex2) 10진법에서 56의 9의 보수는 99-56=43
이렇게 각 자리를 (기수-1)로 모든 자리를 채운다음 보수화 할 수를 빼주면 된다.
2. Radix Complement
이것도 굳이 한글로 표현하자면 기저 보수이다.
간단하게 위의 (N-1)의 보수에 1을 더하면 된다.
이것 역시 공식보다는 한번 해보는 것이 이해가 빠르다.
ex1) 2진법에서 1011의 2의 보수는 [(1111)-(1011)]+1=101 보다시피 1011의 1의 보수에 1을 더했다.
ex2) 10진법에서 56의 10의 보수는 43+1=44 이다.
이렇게 보수를 배운 이유는 컴퓨터는 덧셈만 할 수 있기 때문이다. 그래서 컴퓨터는 보수를 통한 덧셈으로 뺄셈을 계산한다. 2진수에서 보수를 취할 때 1을 0으로 0을 1로만 바꿔주면 되므로 따로 뺄셈이 필요하지 않다.
2진수의 뺄셈
2진수의 보수는 2의 보수와 1의 보수가 있다.
1. 1의 보수를 사용하는 방법
1) 자리수를 추가한다.
2) -가 붙은 수, 즉 뺄려는 수에 1의 보수를 취해준다.
3) 더한다.
4,5) 캐리가 생기면 캐리를 삭제하고 +1을 해준다. / 캐리가 생기지 않으면 다시 1의보수를 취해준 후 -를 붙인다.
ex) (1111)-(1011)
위의 경우는 carry가 발생했을 경우다.
ex) (1011)-(1111)
위의 경우는 carry가 발생하지 않았을 경우다. 마지막에 1의 보수를 취하는 것에 주의해야한다.
2. 2의 보수를 사용하는 방법
1) 자릿수를 추가한다.
2) -가 붙은 수에 2의 보수를 취한다.
3) 더한다.
4,5) 캐리가 생기면 캐리를 삭제하고 남은 부분이 답이다. / 캐리가 생기지 않으면 2의보수를 취해준다.
ex) (1111)-(1011)
위의 경우는 carry가 발생했을 경우이다.
ex) (1011)-(1111)
위의 경우는 carry가 발생하지 않았을 경우이다. 마지막에 2의 보수를 취하는 것에 주의해야한다.
위의 두 방법에서 발생한 carry를 떼어내고 남은 수의 가장 첫번째 자리가 음수인지 양수인지 알려준다.
이와 관련된 내용은 다음 포스팅에서 다루겠다.
자리수를 추가해주지 않으면 계산할 때 오류가 발생할 수 있기 때문에 자리수를 2~4자리정도 늘려잡는 것이 좋다.
'전공 수업 CS > Digital Engineering' 카테고리의 다른 글
[디지털공학] 부울대수(불대수)란? | Boolean algebra | 쌍대 , 공리, 공준 | 부울 대수의 주요법칙 (0) | 2023.03.26 |
---|---|
[디지털 공학] BCD 코드 | Gray 코드 | 아스키코드 | 여러가지 바이너리 코드 (0) | 2023.03.26 |
[디지털 공학] 2진수의 부호표기법 | signed number vs unsigned number | 덧셈 보충 (0) | 2023.03.26 |
[디지털 공학] 수의 표현 | 진수의 변환 (0) | 2023.03.26 |
[디지털 공학] 디지털과 아날로그 | digit, bit, byte (0) | 2023.03.26 |