2019. 6. 24. 13:51ㆍ전자공학과 전공과목/digital design-논리회로
학부생의 입장에서 내용을 정리하였으며 피드백을 환영합니다.
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)의 정확한 차이를 모르겠다. 비슷한 뜻으로 쓰이는 것 같다. 이해하는데는 지장이 없으므로 넘어간다.
공식을 외우기 보다는 단어의 뜻을 이해하는 편이 접근이 쉬울 것이다. 예를 들어 보겠다.
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자리정도 늘려잡는 것이 좋다.
'전자공학과 전공과목 > digital design-논리회로' 카테고리의 다른 글
[Digital design] 불 대수(Boolean Argebra)와 불 함수(Boolean Function) (0) | 2019.06.26 |
---|---|
[Digital design] BCD코드와 여러가지 Binary Code (0) | 2019.06.25 |
[Digital design] 2진수의 부호표기법과 덧셈 보충 (0) | 2019.06.25 |
[Digital design] 진수변환 (0) | 2019.06.24 |
[Digital design] digit, bit, byte (0) | 2019.06.23 |