2의 보수
2의 보수(Two’s Complement)는 컴퓨팅 및 디지털 논리 설계에서 부호가 있는 정수(Signed integers)를 표현하고 수학적 산술 연산을 수행하기 위해 채택된 범용적이고 표준적인 방법이다.
- 산출 메커니즘 특정 2진수 양수에 대한 2의 보수(음수)를 구하는 과정은 다음 두 단계로 명확히 분리된다.
- 1단계 (비트 반전): 대상 2진수의 모든 비트를 반전시킨다 (0은 1로, 1은 0으로 변환). 이 산출물을 1의 보수(One’s Complement)라고 명명한다.
- 2단계 (1 가산): 반전된 결과의 최하위 비트(LSB)에 이진수 1을 더한다.
- (산출 예시) 8비트 아키텍처 환경에서 십진수
+5는 이진수0000 0101이다. 모든 비트를 반전시키면1111 1010이 되며, 최하위 비트에 1을 더하면-5를 의미하는1111 1011이 생성된다.
- 컴퓨터 음수 표현 방식의 비교 컴퓨터 아키텍처 역사에서 음수와 정수를 처리하기 위해 고안된 세 가지 주요 방식을 비교한 데이터는 다음과 같다.
| 비교 항목 | 부호와 크기 (Sign-and-Magnitude) | 1의 보수 (One’s Complement) | 2의 보수 (Two’s Complement) |
|---|---|---|---|
| 작동 원리 | 최상위 비트(MSB)를 부호(0: 양수, 1: 음수)로 할당하고 나머지는 절대값으로 사용 | 양수 데이터의 모든 비트를 반전 | 모든 비트를 반전한 후 결과에 1을 가산 |
| 영(Zero)의 표현 | 비효율적: 2개 존재 (+0, -0) | 비효율적: 2개 존재 (+0, -0) | 효율적: 1개 존재 (0) |
| 기술적 장점 | 데이터 구조상 인간이 읽고 해석하기 직관적임 | 하드웨어 덧셈 설계가 부호와 크기 방식보다 덜 복잡함 | 가산기(Adder) 회로 하나로 덧셈과 뺄셈 연산을 논리적 오류 없이 통합 수행 가능 |
| 기술적 단점 | 산술 연산 시 부호와 크기를 개별 검사하는 복잡한 논리 회로 및 감산기(Subtractor) 필수 | 오버플로우 연산 시 발생하는 순환 캐리(End-around carry)를 처리할 추가 회로 요구 | 양수와 음수의 표현 범위가 비대칭적임 (예: 8비트 기준 -128 ~ +127) |
- 구조적 및 실무적 이점 2의 보수 시스템의 가장 핵심적인 이점은 중앙처리장치 내 산술논리연산장치(ALU)의 설계를 극도로 단순화한다는 것이다. 프로세서는 별도의 감산 회로를 구축하거나 자원을 할당할 필요가 없다. 뺄셈(A - B) 명령어가 하달되면, 내부 로직은 피연산자를 2의 보수로 변환하여 기존 덧셈 회로에 병합(A + (-B))하는 것만으로 결과를 도출한다. 또한 양수 영(+0)과 음수 영(-0)이 혼재하는 중복 식별 문제를 단일 비트 패턴으로 통합 해결하여, 조건부 분기(Conditional branching) 및 메모리 자원 할당의 효율성을 최적화한다.
출처 및 참고문헌(Sources)
- Patterson, D. A., & Hennessy, J. L. (2013). Computer Organization and Design: The Hardware/Software Interface (5th ed.). Morgan Kaufmann.
- Null, L., & Lobur, J. (2014). The Essentials of Computer Organization and Architecture (4th ed.). Jones & Bartlett Publishers.