이전 섹션에서는 1의 보수를 사용하여 덧셈, 뺄셈과 같은 산술 연산을 수행하는 방법을 배웠습니다. 이번 섹션에서는 2의 보수를 사용하여 이러한 연산을 수행하는 방법을 배웁니다.
컴퓨터를 정의하다
2의 보수를 이용한 덧셈
2의 보수를 사용하여 두 개의 이진수를 더할 때 가능한 세 가지 경우는 다음과 같습니다.
사례 1: 양수가 더 큰 크기를 가질 때 음수에 양수를 추가합니다.
처음에 주어진 음수의 2의 보수를 구합니다. 주어진 양수로 합산하세요. 최종 캐리 1을 얻으면 숫자는 양수가 되고 캐리 비트는 삭제되고 나머지 비트는 최종 결과가 됩니다.
예: 1101 및 -1001
- 먼저 음수 1001의 2의 보수를 구합니다. 따라서 2의 보수를 구하려면 0을 모두 1로, 1을 모두 0으로 바꾸거나 1001의 1의 보수를 구합니다. 1001의 1의 보수는 0110이고, 결과 0110의 LSB에 1을 더합니다. 따라서 숫자 1001의 2의 보수는 0110+1=0111입니다.
- 두 숫자(예: 1101 및 0111)를 모두 추가합니다.
1101+0111=1 0100 - 두 숫자를 더함으로써 우리는 최종 캐리 1을 얻습니다. 우리는 최종 캐리를 버립니다. 따라서 두 숫자를 더하면 0100이 됩니다.
사례 2: 음수가 더 높은 크기를 가질 때 음수 값에 양수 값을 추가합니다.
처음에는 음수의 2의 보수에 양수를 더합니다. 여기서는 최종 캐리가 발견되지 않습니다. 따라서 최종 결과를 얻기 위해 결과의 2의 보수를 취합니다.
참고: 결과는 음수 값입니다.
예: 1101 및 -1110
- 먼저 음수 1110의 2의 보수를 찾습니다. 따라서 2의 보수를 찾으려면 1의 보수 값 0001의 LSB에 1을 추가합니다.
0001+1=0010 - 두 숫자(예: 1101 및 0010)를 모두 추가합니다.
1101+0010= 1111 - 최종 결과인 결과 1110의 2의 보수를 구합니다. 따라서 결과 1110의 2의 보수는 0001이 되며, 음수임을 식별할 수 있도록 숫자 앞에 음부호를 추가한다.
사례 3: 두 개의 음수 더하기
이 경우 먼저 두 음수의 2의 보수를 찾은 다음 두 보수를 모두 더합니다. 이 경우, 우리는 항상 LSB에 추가될 엔드 어라운드 캐리를 얻게 되며, 최종 결과는 잊어버리고 결과의 2의 보수를 취하게 됩니다.
참고: 결과는 음수 값입니다.
예: 5비트 레지스터의 -1101 및 -1110
- 먼저 음수 01101과 01110의 2의 보수를 찾습니다. 따라서 2의 보수를 찾기 위해 이 숫자의 1의 보수 LSB에 1을 더합니다. 01110의 2의 보수는 10010이고, 01101은 10011입니다.
- 우리는 보수 숫자, 즉 10001과 10010을 모두 추가합니다.
10010+10011= 1 00101 - 두 숫자를 더함으로써 우리는 최종 캐리 1을 얻습니다. 이 캐리는 폐기되고 최종 결과는 결과 00101의 2.s 보수입니다. 따라서 결과 00101의 2의 보수는 11011이고 음수를 추가합니다. 숫자 앞에 서명하면 음수임을 식별할 수 있습니다.
2의 보수를 사용한 뺄셈
2의 보수를 사용하여 두 개의 이진수를 빼는 단계는 다음과 같습니다.
- 첫 번째 단계에서는 감수의 2의 보수를 구합니다.
- 피감수와 함께 보수를 더합니다.
- 두 숫자를 더하여 캐리를 얻으면 이 캐리를 버리고 결과는 양수입니다. 그렇지 않으면 결과의 2의 보수를 취하여 음수가 됩니다.
예시 1: 10101 - 00111
우리는 감수 00111의 2의 보수, 즉 11001을 취합니다. 이제 그 합을 구합니다. 그래서,
10101+11001 =1 01110.
위의 결과에서 우리는 캐리 비트 1을 얻습니다. 따라서 이 캐리 비트를 버리고 나머지는 최종 결과이며 양수입니다.
예 2: 10101 - 10111
우리는 감수 10111의 2의 보수를 취해 01001이 나옵니다. 이제 두 숫자를 모두 더합니다. 그래서,
10101+01001 =11110.
위의 결과에서는 캐리 비트를 얻지 못했습니다. 따라서 결과의 2의 보수, 즉 00010을 계산합니다. 이는 음수이자 최종 답입니다.