[Computer Architecture] 1의보수와 2의 보수

임수정·2024년 7월 12일
0

📝 Learning Log

목록 보기
42/47
post-thumbnail

컴퓨터는 N개의 비트를 이용해 2^N개의 정수만 표현할 수 있다. 이러한 방식을 이용해서 수를 표현해야 하기때문에 쉽지 않다. 또한 정수는 음의 정수와 양의 정수로 나누어지기 때문에 +,- 기호 또한 전부 비트로 표현을 해주어야 한다. 하지만 정확히 어떤 방식으로 이러한 정수를 표현할 수 있을까? 그것을 알기 위해선 보수라는 개념을 이해해야 한다.

보수란?

두 수의 합이 진법의 밑수(N)가 되게 하는 수를 말한다. 예를 들어 10진수 4의 10의 보수는 6이고, 10진수 2의 10의 보수는 8이다. 보수는 컴퓨터에서 음의 정수를 표현하기 위해 고안되었다. 컴퓨터 내부에서는 사칙연산을 할 때 덧셈을 담당하는 가산기(Adder)만 이용하기 때문에 뺄셈은 덧셈으로 형식을 변환하여 계산해야 한다. 즉 컴퓨터 내부에서는 A-B를 계산할 때 B의 보수(-B)를 구한 다음 A+(-B)로 계산하는 것이다.

📍 1의 보수

1의 보수는 숫자를 반대로 바꾸는 특별한 방법이다.
예를 들어 숫자 5는 이진수로 (8비트)00000101로 표현되는데 1의 보수를 적용하면 이 숫자를 모두 반대로 바꾸어 11111010이 된다.
즉, 1의 보수는 숫자의 모든 비트를 뒤집어서 표현하는 것이다.

1의 보수는 오버플로우 처리가 다소 복잡할 수 있고, 0의 표현이 두가지로 나뉘어 있어서 일관성이 떨어질 수 있다.

▶ 1의 보수 계산법 더 알아보기

📍 2의 보수

2의 보수는 숫자를 음수로 만드는 특별한 방법이다.
예를 들어 숫자 5는 이진수로 (8비트)00000101로 표현되는데 2의 보수를 만들려면 먼저 모든 숫자를 반대로 바꾸고(1의 보수, 11111010) 그 다음에 1을 더해준다. 그러면 11111011이 된다. 이것이 숫자 5의 2의 보수

2의 보수는 오버플로우 처리가 쉽고, 음수를 나타내는 방법이 일관되며 효율적이다.

▶ 2의 보수 계산법 더 알아보기

📍 결론

두 방법 모두 음수를 표현할 수 있지만, 대부분의 현대 컴퓨터 시스템에서는 2의 보수가 표준적으로 사용된다. 이는 오버플로우 처리가 간편하고, 수의 표현이 일관되며 추가적인 논리 게이트가 필요하지 않기 때문이다.

  1. 1의 보수는 양수 0과 음수 0(모튼 비트가 1로)로 나뉘어 표현되지만, 2의 보수는 오직 하나의 0만 가진다.

  2. 2의 보수는 덧셈과 뺄셈 연산에서 일관된 방식으로 처리되며, 오버플로우 처리도 쉽게 할 수 있다. 1의 보수는 보수 연산 후에 추가적인 처리가 필요하다.

  3. 대부분의 현대 컴퓨터 시스템은 2의 보수를 사용한다. 1의 보수는 구현이 복잡하고 특정한 상황에서만 사용 가능하다.

profile
언어는 거들 뿐...

0개의 댓글