1. 개요
최근 받은 질문 중 보수가 뭔지 알고 싶다는 질문이 있었다.
개인적으로 개념정도만 알면 되고 자세하게 공부할 필요는 없다고 생각하지만, 마침 해당 주제에 대해 공부했던 내용이 떠올라 관련된 내용의 글을 적어본다.
2. 덧셈
컴퓨터는 computer, 즉 연산을 수행하는 장치이다.
그리고 컴퓨터에서 연산을 수행하는 핵심 부품은 CPU이며, 그중 ALU가 연산을 담당한다.
우리가 사용하는 컴퓨터는 디지털 컴퓨터로 0과 1로 데이터를 처리한다.
그래서 10진수의 데이터를 2진수로 변환해 덧셈을 연산한다.
2진수로 5 + 3이라는 덧셈을 해보자.
우선 각각의 수를 2진수로 변환한다.
그 다음 뒤에서부터 한 자리씩 연산을 수행한다.
이때 값이 2가되면 자리올림을 수행한다.
결과 :
2진수로는 1000, 10진수로 변환하면 8이 나온다.
여기까지는 대부분 알고 있는 내용일 것이다.
3. 뺄셈
다음은 컴퓨터가 뺄셈을 하는 과정을 알아보자.
사실 컴퓨터는 뺄셈을 할 수 없다.
컴퓨터는 덧셈을 통해 뺄셈 연산을 수행한다.
3.1. 10진법 뺄셈
우선 10진수로 8 - 2라는 연산을 해보자.
결과는 모두가 알다시피 6이 나올 것이다.
하지만 우리는 뺄셈 없이 덧셈만으로 이 답을 얻어낼 것이다.
이때 뺄셈을 없애기 위해 보수(Complement)라는 것을 사용해야 한다.
우리는 10진수의 연산을 하고 있기 때문에 10에 대한 보수를 구해야 한다.
2가 10이 되기 위해서는 8을 더해야 한다.
그러므로 10에 대한 2의 보수는 8이다.
그럼 처음 식은 다음과 같이 바뀐다.
그다음 덧셈을 수행하면
이때 앞의 10 의자리수는 버린다.
처음 구한 답과 동일하다.
이 연산과정을 2진수로도 적용해 보자.
3.2. 2진법 뺄셈
이번엔 8 - 1의 연산을 해보자.
우선 위 식을 2진수로 변환해야 한다.
이제 뺄셈을 없애기 위해 보수를 구해보자.
2진법에서 보수를 구하려면 0과 1을 뒤집은 후 1을 더하면 된다.
연산과정을 보자면
보수를 구했으니 그다음은 단순 덧셈이다.
그 다음 위에서 그랬듯 맨 앞의 1을 버린다.
위 과정이 컴퓨터가 뺄셈을 연산하는 과정이다.
4. 정리
글을 적다 보니 질문했던 사람이 원하던 내용이 아닌 것 같아서 간단하게만 설명하고 마무리했다.
너무 쉬운 내용이지만 혹시나 궁금했을 사람이 있을지도 모르니 포스팅해 본다.