프롬프트
프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.1의 보수와 2의 보수를 만드는 방법을 설명하고, 2의 보수의 장점을 설명해 줘.
AI가 만든 결과
아래는 1의 보수(1's complement)와 2의 보수(2's complement)를 어떻게 만들고, 2의 보수가 어떤 장점을 갖는지에 대한 설명입니다.
1. 1의 보수(1’s complement) 만들기
1의 보수는 이진수(binary)에서 각 자리의 0은 1로, 1은 0으로 뒤집어서 만든 보수입니다.
- 예) 이진수
101100
이 있다면,1 → 0
,0 → 1
로 뒤집어서 →010011
이 1의 보수가 됩니다.
1-1. 예시 (8비트 기준)
- 양수
5
는 2진수(8비트)로00000101
5
의 1의 보수는 각 자리를 반전 →11111010
이처럼 1의 보수
를 구하는 과정은 “비트 반전”과 동의어라고 할 수 있습니다.
2. 2의 보수(2’s complement) 만들기
2의 보수를 만드는 방법은 1의 보수를 만든 뒤, 1을 더하는 과정을 거칩니다.
- 먼저 이진수를 1의 보수로 뒤집습니다.
- 그 결과에 1을 더합니다.
2-1. 예시 (8비트 기준)
-
양수
5
는 2진수(8비트)로00000101
1) 먼저 비트를 뒤집어서 1의 보수를 구한다 →11111010
2) 여기에 1을 더한다 →11111010 + 1 = 11111011
-
따라서
5
의 2의 보수는11111011
이 됩니다.
3. 2의 보수의 장점
덧셈과 뺄셈을 한 가지 연산(덧셈)으로 통일 가능
- 2의 보수를 사용하면, 음수 표현을 포함한 정수 연산에서 별도의 뺄셈 기계를 구현하지 않아도 됩니다.
- 예를 들어, 컴퓨터가
A - B
를 계산해야 할 때,B
의 2의 보수를 구하고 →A
와 더해주면(덧셈) →A - B
결과를 얻을 수 있습니다.
- 이 덕분에 하드웨어(회로)가 단순화되고, 연산 속도가 빨라집니다.
유일한 영(Zero)의 표현
- 1의 보수 체계에서는 +0과 -0이 따로 존재하여(서로 다른 비트 패턴), 둘 다 ‘0’으로 취급하는 모호함이 있었습니다.
- 반면 2의 보수 체계에서는 +0과 -0이 동일한 비트 패턴을 가지므로, 오로지 하나의 0만 존재합니다.
- 이는 프로그래밍 및 하드웨어 설계에서 큰 이점을 제공합니다.
간단한 오버플로(Overflow) 처리
- 2의 보수에서 음수와 양수를 더했을 때 오버플로가 발생하는 경우, 결과를 무시하거나 특정 비트를 참조함으로써 간단히 처리할 수 있습니다.
- 1의 보수처럼 덧셈 결과에 1을 더해야 하는 추가 단계가 없어, 회로 구현도 간편합니다.
종합 정리
- 1의 보수: 각 비트를 반전시켜 만든 보수
- 예)
101100
→010011
- 예)
- 2의 보수: 1의 보수에 1을 더해서 만든 보수
- 예)
101100
→ 1의 보수010011
→ +1 →010100
(2의 보수)
- 예)
- 2의 보수 체계의 장점
- 덧셈 연산만으로도 뺄셈을 처리할 수 있다 (회로 단순화, 빠른 연산).
+0
,-0
이 구분되지 않아 하나의 0만 존재.- 오버플로 처리가 간단.
이러한 이유로, 실제 컴퓨터 하드웨어는 2의 보수 방식을 사용하여 정수를 저장하고 연산합니다.