본문 바로가기

전자 공학/논리회로

보수란? - 1의 보수, 2의 보수

반응형

안녕하세요. 취업한 공대누나입니다.

기초적인 논리 회로를 많이 까먹어서 논리회로를 복습해보고자 합니다.

오늘은 보수의 개념에 대해 알아보도록 하겠습니다.


1. 보수란?

우선 보수란 각 자리의 숫자의 합이 어느 일정한 수가 되게 하는 수입니다.

보통 현재의 숫자에서 자릿수가 한단계 올라가게 하기 위한 수를 말합니다.

예를 들어서 100에 대한 10의 보수는 900이 됩니다.

 

이해가 잘 되실진 모르겠지만 예를 들어보도록 하겠습니다.

r진법의 보수에서 N에 대한  r-1의 보수는 최댓값-N입니다.

여기서 최댓값이란 그 자릿수에서 가질 수 있는 최댓값입니다.

그리고 r의 보수는 r-1의 보수에 +1을 해주면 됩니다.

 

그렇다면 이러한 보수의 개념은 왜 공부하는 것일까요?

바로 음수를 표현하기 위해서, 혹은 마이너스 연산을 플러스 연산으로 하기 위해서입니다.


2. 2진법에서 1의 보수와 2의 보수 구하기

 

1의 보수 구하기

010의 1의 보수를 구한다고 하면 자릿수가 세개이므로 111에서 010을 빼서 구하는 것입니다.

만약 0010의 1의 보수를 구한다고 하면 자릿수가 네개이므로 1111에서 0010을 빼주면 되겠지요.

 

그냥 간단하게 생각하면 1을 0으로 바꾸고 0을 1로 바꿔서 1의 보수를 구할 수도 있습니다.

 

2의 보수 구하기

2의 보수는 1의 보수에다가 1을 더해주면 됩니다.

하지만 두 과정을 거치기 귀찮으므로 편하게 할 수도 있습니다.

11010의 2의 보수를 구한다고 해보면 뒤에서부터 처음만나는 1까지는 그냥 적고 나머지는 0과 1을 반대로 적어주면 됩니다.


3. 음수 표현하기

3비트 예시를 들어보도록 하겠습니다.

음수는 아래와 같이 표현할 수 있습니다.

최상위 비트는 부호를 나타냅니다.

+3의 경우 011인데, 0은 +라는 부호를 나타내고 11이 3이라는 숫자를 나타냅니다.

이를 음수로 표현하고자 한다면 양수 값에 해당하는 (+3, +2, +1, +0)을 먼저 채워넣고

1의 보수에서는 -1을 구하고자 한다면 +1을 1의 보수를 취하고 -2를 구하고자 한다면 +2를 1의 보수를 취하면 됩니다. 2의 보수도 마찬가지로 -1을 구하고자 한다면 +1을 2의 보수를 취하고 -2를 구하고자 한다면 +2를  2의 보수를 취해주면 되겠지요.

 

이 때 엥?하는 부분이 있으실수도 있습니다.

바로 +0과 -0인데요. 

1의 보수에서는 이렇게 000과 111모두 0이 됩니다. 즉 0이 두개가 되지요.

하지만 2의 보수에서는 0이 한 개로만 표현이 됩니다.

즉, 1의 보수에서는 0이 두 개라는 단점이 존재하게 되는 것이지요.

 

그렇다면 2의 보수에서 위의 표에 없는 100은 어떤 값을 나타내게 될까요?

바로 -4를 나타내게 됩니다.

 

그래서 n비트를 정수로 표현하고 한다면 아래와 같은 범위를 갖게 되는 것입니다.


4. 연산하기

2의 보수 더하기 연산

3비트로 해보도록 하겠습니다.

Carry가 생길 경우 과감하게 버려주시면 됩니다.

그리고 Overflow가 발생하는 경우는 연산 값이 틀리게 됩니다.

 

2의 보수 뺄셈 연산

A-B 를 하게 될 경우 더하기 바꿀 수 있는데요.

A + (B의 보수)를 하면 됩니다. 예시를 보도록 하겠습니다.

 

1의 보수와 2의 보수 덧셈 비교

예를 들어서 3+(-2)를 해보겠습니다.

 

2의 보수에서는 Carry가 발생할 경우 그냥 버리면 끝이납니다.

하지만 1의 보수에서는 Carry가 발생할 경우 결과 값에 더해줘야 합니다.

즉 한 번의 연산이 더 필요한 경우가 생깁니다.

그래서 2의 보수로 연산하는 것이 더 편합니다.


틀린 점이 있으면 댓글로 알려주세요~

반응형

'전자 공학 > 논리회로' 카테고리의 다른 글

D 래치란?  (0) 2022.06.13
SR 래치(Latch)란?  (0) 2022.06.07