Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

십진수의 10의 보수(10's Complement)란? 개념부터 계산법까지

디지털 시스템에서 9의 보수(9's complement)10의 보수(10's complement)는 산술 연산을 더욱 간편하게 수행하기 위해 사용되는 개념입니다. 보수를 활용하면 뺄셈 연산을 덧셈으로 처리할 수 있어, 하드웨어 자원을 절약하면서도 효율적인 계산이 가능합니다.

9의 보수(9's Complement) 구하는 방법

임의의 숫자에 대한 9의 보수를 구하려면 해당 숫자를 (10n − 1)에서 빼면 됩니다. 여기서 n은 숫자의 자릿수입니다. 더 간단한 방법으로는, 주어진 십진수의 각 자릿수를 9에서 빼는 방식으로도 구할 수 있습니다.

10의 보수(10's Complement) 구하는 방법

10의 보수는 9의 보수를 먼저 구한 후 비교적 쉽게 얻을 수 있습니다. 바로 9의 보수에 1을 더하면 그 숫자의 10의 보수가 됩니다. 또한 다음 공식을 이용하면 10의 보수를 직접 계산할 수도 있습니다.

(10n − 숫자), 단 n = 숫자의 자릿수

예시: 숫자 456의 보수 계산

십진수 456의 9의 보수를 구해보겠습니다. 각 자릿수를 9에서 빼면 다음과 같습니다.

999
-456
_____
543

이제 9의 보수인 543에 1을 더하여 10의 보수를 구합니다.

543
(+)1
______
544
입력: 456
출력: 544

수학적 원리

위 과정을 수식으로 정리하면 다음과 같습니다.

10의 보수 = 9의 보수 + 1
10의 보수 = 10i − num

여기서 i는 num의 총 자릿수를 의미합니다.

C++ 구현 예제

다음은 위 원리를 C++ 코드로 구현한 예제입니다. 입력된 숫자의 자릿수를 먼저 계산한 후, 공식을 적용하여 10의 보수를 출력합니다.

#include <iostream>
#include <math.h>
using namespace std;
int main() {
    int i=0,temp,comp,n;
    n=456;
    temp = n;
    while(temp!=0) {
       i++;
       temp=temp/10;
    }
    comp = pow(10,i) - n;
    cout<<comp;
    return 0;
}

이처럼 10의 보수는 디지털 회로 설계나 컴퓨터 내부의 뺄셈 연산에서 널리 활용되는 핵심 개념이므로, 정확히 이해하고 넘어가는 것이 좋습니다.