2024. 6. 20. 23:05ㆍ기초지식
이 글에서는 컴퓨터 구조에서 중요한 2의 보수와 1의 보수 개념을 쉽게 설명하고자 작성하였음.
보수법은 컴퓨터 공학과 수학에서 중요한 개념으로, 특히 이진수 계산에서 많이 사용된다. 주로 빼기 연산을 더하기 연산으로 변환하는 데 사용되며, 컴퓨터가 덧셈 연산만으로 뺄셈을 수행할 수 있게 해 준다. 따라서, 보수법은 주로 이진수 연산에서 빼기 연산을 더하기 연산으로 변환하는데 사용되는 기법이다. 반면, Sign-Magnitude Representation와 같은 방법은 양수와 음수를 표현하는 방식입니다.
보수법의 종류
- 1의 보수법
: 각 비트를 반전시키는 방법. - 2의 보수법
: 1의 보수에 1을 더하는 방법. 2의 보수법은 컴퓨터 시스템에서 가장 많이 사용되며, 2의 보수를 사용하면 부호 있는 숫자를 쉽게 표현하고 연산할 수 있다.
보수법에는 1의 보수법과 2의 보수법이 있으며, 각 방법의 자세한 설명은 아래에 예시와 함께 설명하겠다.
음수 표현법
- 부호-크기 표현 (Sign-Magnitude Representation)
가장 간단한 형태의 음수 표현 방식 중 하나로 가장 왼쪽 비트를 부호를 나타내는 비트로 사용하고, 나머지 비트들은 해당 수의 크기를 나타낸다.
예시) 8비트 +5 : 0000 0101 , -5 : 1000 0101로 표현. - 1의 보수 (One's Complement)
1의 보수는 음수를 나타내기 위해 모든 비트를 반전시키는 방식으로, 0의 표현이 두 가지로 나뉘어 계산이 복잡해지는 단점이 있다.
예시) 8비트 +5 : 0000 0101 , -5 : 1111 1010으로 표현 - 2의 보수 (Two's Complement)
2의 보수는 1의 보수에 1을 더하는 방식으로 음수를 나타낸다.
이 방식은 가장 널리 사용되는 방식 중 하나로, 연산이 간편하고 0의 표현이 유일하다는 장점이 있습니다. - 부호-절댓값(Sign-Magnitude) 표현
부호-절댓값 표현은 가장 왼쪽 비트를 부호 비트로 사용하고, 나머지 비트들을 숫자의 절댓값을 나타내는 데 사용합니다.
부호비트가 0이면 양수, 1이면 음수이다.
예시) 4비트 +5 : 0101 , -5 : 1101
1의 보수법
- 1 -> 0으로, 0 -> 1로 바꾸는 것.
예시)
원본: 1010
1의 보수: 0101
2의 보수법
- 1 -> 0으로, 0 -> 1로 바꾼 후 +1
예시)
원본: 1010
1의 보수: 0101 (모든 비트를 반전)
+ 1: 0001
-------------------
2의 보수: 0110
보수법을 사용한 뺄셈
- 보수법은 특히 뺄셈 연산에서 유용하며, 2의 보수법을 사용하면 빼기 연산을 더하기 연산으로 변환할 수 있다.
예시) 7(0111)과 3(0011)을 뺀다고 할 때, 7 - 3 -> 7 + (-3)으로 계산한다고 보면 된다.
먼저, 3의 2의 보수를 구한다.
원본 3 : (0011)
1의 보수: 1100
+ 1: 0001
----------------
2의 보수: 1101
그다음, 7에 3의 보수를 더한다
0111 (7)
+ 1101 (3의 보수)
---------
1 0100 (5비트가 되므로 맨 앞의 1을 버림)
결과: 0100 (4)
따라서, 결과는 7 - 3 = 4 가 나오게 된다.
8비트 이진수에서 2의 보수를 구할 때의 예시로 다시 한번 정리한다면,
+5 이진수 표현 -> 0000 0101
- 부호-크기 표현 -> 1000 0101 (맨 왼쪽 비트만 1로)
- 1의 보수 -> 1111 1010 (1은 0으로, 0은 1로)
- 2의 보수 -> 1111 1011 (1의 보수에 1을 더함)
이러한 보수법의 장점은 아래와 같다.
보수법의 장점
- 연산 단순화: 뺄셈을 덧셈으로 변환하여 연산 속도와 효율성을 높입니다.
- 오류 검출: 보수법을 사용하면 연산 중 발생할 수 있는 오류를 쉽게 검출할 수 있습니다.
- 부호 표현: 부호 있는 이진수를 표현하는데 효과적입니다.
부호-절댓값 표현 (Sign-Magnitude Representation)
- 가장 왼쪽 비트를 부호 비트로 사용하고, 나머지 비트들을 숫자의 절댓값을 나타낸다. (부호비트 : 0은 양수, 1이면 음수이다.)
예시) 7 - 3
+7 : 0111
-3 : 1011
이 두 숫자를 더하면:
0111
+ 1011
------
1 0010 (5비트가 되므로 부호 비트를 따로 처리해야 함)
이 결과는 연산 과정이 복잡하고, 최종 결과를 해석하기 어렵다.
보수법과의 차이점
- 표현 방식
- Sign-Magnitude: 가장 왼쪽 비트를 부호 비트로 사용.
- 1의 보수법: 각 비트를 반전.
- 2의 보수법: 1의 보수에 1을 더함.
- 연산 방식
- Sign-Magnitude: 덧셈과 뺄셈 시 부호를 고려해야 함.
- 보수법: 덧셈만으로 뺄셈을 수행.
- 복잡도
- Sign-Magnitude: 부호 비트를 따로 처리해야 하므로 연산이 더 복잡.
- 보수법: 연산이 단순화됨.
1의 보수 vs 2의 보수 비교 표
10진수 | 양수의 2진 표현 | 1의 보수 | 2의 보수 |
+3 | 00000011 | 00000011 | 00000011 |
-3 | 11111100 | 11111101 | |
+2 | 00000010 | 00000010 | 00000010 |
-2 | 11111101 | 11111110 |