[Digital design] 보수와 2진수의 덧셈과 뺄셈

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)의 정확한 차이를 모르겠다. 비슷한 뜻으로 쓰이는 것 같다. 이해하는데는 지장이 없으므로 넘어간다.

여기서 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자리정도 늘려잡는 것이 좋다.