이전 섹션에서는 1의 보수, 2의 보수, 9의 보수, 10의 보수 등과 같은 다양한 보수에 대해 배웠습니다. 이번 섹션에서는 1의 보수를 사용하여 덧셈, 뺄셈과 같은 산술 연산을 수행하는 방법을 알아봅니다. 1, 2, 9, 10의 보수를 사용하여 덧셈과 뺄셈을 수행할 수 있습니다.
1의 보수를 이용한 덧셈
다음과 같은 두 개의 이진수를 더할 때 가능한 세 가지 경우가 있습니다.
사례 1: 양수가 더 큰 크기를 가질 때 음수에 양수를 추가합니다.
처음에는 주어진 음수의 1의 보수를 계산합니다. 주어진 양수로 합산하세요. 최종 캐리 1을 얻으면 LSB에 추가됩니다.
예: 1101 및 -1001
- 먼저 음수 1001의 1의 보수를 구합니다. 따라서 1의 보수를 구하려면 0을 모두 1로, 1을 모두 0으로 변경합니다. 숫자 1001의 1의 보수는 0110입니다.
- 이제 두 숫자, 즉 1101과 0110을 모두 추가합니다.
1101+0110=1 0011 - 두 숫자를 더함으로써 우리는 최종 캐리 1을 얻습니다. 우리는 이 최종 캐리를 0011의 LSB에 추가합니다.
0011+1=0100
사례 2: 음수가 더 큰 경우 음수에 양수 값을 추가합니다.
처음에는 음수 값의 1의 보수를 계산합니다. 양수로 합산하세요. 이 경우, 우리는 최종 캐리를 얻지 못했습니다. 따라서 최종 결과를 얻으려면 결과의 1의 보수를 취하십시오.
참고: 결과는 음수 값입니다.
예: 1101 및 -1110
- 먼저 음수 1110의 1의 보수를 찾습니다. 따라서 1의 보수를 찾으려면 모두 0을 1로, 1을 모두 0으로 변경합니다. 숫자 1110의 1의 보수는 0001입니다.
- 이제 두 숫자(예: 1101과 0001)를 모두 추가합니다.
1101+0001= 1110 - 이제 최종 결과인 결과 1110의 1의 보수를 구합니다. 따라서 결과 1110의 1의 보수는 0001이 되며, 음수임을 식별할 수 있도록 숫자 앞에 음수 부호를 붙인다.
사례 3: 두 개의 음수 더하기
이 경우 먼저 두 음수의 1의 보수를 찾은 다음 두 보수를 모두 더합니다. 이 경우, 우리는 항상 LSB에 추가되는 최종 캐리를 얻고, 최종 결과를 얻기 위해 결과의 1의 보수를 취합니다.
참고: 결과는 음수 값입니다.
예: 5비트 레지스터의 -1101 및 -1110
- 먼저 음수 01101과 01110의 1의 보수를 찾습니다. 따라서 1의 보수를 찾으려면 모두 0을 1로, 모두 1을 0으로 변경합니다. 숫자 01110의 1의 보수는 10001이고 01101은 10010입니다.
- 이제 우리는 보수 숫자, 즉 10001과 10010을 모두 추가합니다.
10001+10010= 1 00011 - 두 숫자를 더함으로써 우리는 최종 캐리 1을 얻습니다. 우리는 이 최종 캐리를 00011의 LSB에 추가합니다.
00011+1=00100 - 이제 최종 답인 결과 00100의 1의 보수를 구합니다. 따라서 결과 00100의 1의 보수는 110111이 되며, 음수임을 식별할 수 있도록 숫자 앞에 음수 기호를 추가합니다.
1의 보수를 이용한 뺄셈
1의 보수를 사용하여 두 개의 이진수를 빼는 단계는 다음과 같습니다.
- 첫 번째 단계에서는 감수의 1의 보수를 구합니다.
- 다음으로 피감수와 함께 보수를 더합니다.
- 캐리가 있으면 LSB에 캐리를 추가합니다. 그렇지 않으면 음수가 될 결과에 대해 1의 보수를 취합니다.
참고: 빼기 값은 항상 빼기 값에서 뺍니다.
예시 1: 10101 - 00111
감수 00111의 1의 보수를 취하면 11000이 나옵니다. 이제 그 합을 구합니다. 그래서,
10101+11000 =1 01101.
위의 결과에서 캐리 비트 1을 얻었으므로 이를 주어진 결과의 LSB에 추가합니다(예: 01101+1=01110). 이것이 답입니다.
예 2: 10101 - 10111
감수 10111의 1의 보수를 취하면 01000이 나옵니다. 이제 두 숫자를 모두 더합니다. 그래서,
10101+01000 =11101.
위의 결과에서는 캐리 비트를 얻지 못했습니다. 따라서 결과의 1의 보수, 즉 음수이자 최종 답인 00010을 계산합니다.