자격증/전자계산기조직응용기사

[전자계산기조직응용기사] 필수! 1의 보수, 2의 보수의 계산

FintechPark 2021. 4. 16. 18:00

보수란?


 

보수: 진보의 반대가 아니라 두 수의 합이 n진법의 밑수가 되게 하는 법입니다. 예시를 한번 볼까요

 

  • 10진법에서 3의 10의 보수는 7
  • 8진법에서 6의 8의 보수는 2
  • 2진법에서 1의 2의 보수는 1

 

그러나 우리는 0과 1의 세상 속 컴퓨터기에, 2진법의 경우만 알면 됩니다. 컴퓨터가 보수의 개념을 쓰는 이유는 덧셈 밖에 못해서인데요, 우리가 10-3=7이라 생각하는 것을 컴퓨터는 10+(-3)=7로 생각합니다. 따라서 보수의 개념이 필요한 것이지요. (부호는 - ->1, + -> 0으로 표현 가능함)

 

2진법의 경우, 2의 보수를 구하기 위해서는 1의 보수를 먼저 구해야 합니다. 1의 보수는 숫자를 뒤집어주면 되고(0->1, 1->0), 2의 보수는 그 1의 보수에 1을 더해주면 됩니다. 예시로 알아볼까요.

 

  • 0101 = 십진법 5
  • 1010 = 5의 1의 보수
  • 1011 = 5의 2의 보수

 

 

 

부호화된 보수


찹 쉽죠? 그러나 부호 절대값, 부호화된 1의 보수, 부호화된 2의 보수를 알아야 뺄셈이 가능해집니다. 부호화되었다는 것은 말 그대로 부호(+,-)를 앞에 붙여준다는 말이며, -는 1, +는 0입니다.

 

예를 들어

 

  • 십진법 5 = 0101 -> 00101
  • 십진법 -5 = 0101 -> 10101

 

이며, 이 최상위 비트인 부호는 1의 보수와 2의 보수를 계산할 때 바뀌지 않습니다.

 

구분 부호와 절대값 부호와 1의 보수 부호와 2의 보수
+5 00101 00101 00101
-5 10101 11010 11011

 

양수(+)의 경우, 부호와 절댓값 = 부호와 1의 보수 = 부호와 2의 보수이며, 음수는 부호는 놔두고 우리가 배웠던 계산식을 활용하면 됩니다.  그렇다면 2의 보수끼리 더해볼까요. (+5) + (-5) = 00101 + 11011 = 100000 이 되지만, 5bit 체계이기에 최상위 비트는 날립니다. 따라서 (+5) + (-5) = 00000으로 깔끔하게 계산이 되네요. 컴퓨터는 0과 1의 세상 속에서 이런 식의 계산을 합니다. 컴퓨터는, 틀릴 수 없습니다.

 

 

 

1의 보수의 뺄셈과 2의 보수의 뺄셈


 

1의 보수의 뺄셈

 

  1. 빼는 수의 1의 보수를 구한 다음 더함.
  2. 덧셈한 결과가 최상위 비트에서 자리올림이 생겼다면 최하위 비트에 1을 더함
  3. 덧셈한 결과가 최상위 비트에서 자리올림이 생기지 않았다면 연산 결과에 대해 1의 보수를 구한 후 - 부호를 붙임

 

​[예시]

 

  • 7-5 = 111-101 = 111+010 = 1001인데 3bit의 식에서 4bit(최상위 비트)에 1의 자리올림이 일어났으므로 그것을 없애고 최하위 비트에 1을 더해줍니다. 1001-> 001+1 = 010 = 2 따라서 올바르게 계산이 되었네요. 

 

  • 5-7 = 101-111 = 101+000 = 101이라서 자리올림이 일어나지 않았습니다. 101의 1의 보수는 다시 010이며, -를 부호를 붙이면 -010 = -2가 됩니다. 

​2의 보수의 뺄셈

 

  1. 빼는 수의 2의 보수를 구한 다음 더함.
  2. 덧셈한 결과가 최상위 비트에서 자리 올림이 생겼다면 자리올림을 제외한 나머지 부분이 결과.
  3. 덧셈한 결과가 자리 올림이 생기지 않았다면 연산 결과의 2의 보수를 구한 후 -부호를 붙임

 

​[예시]

 

  • 7-5 = 111-101 = 111+011 = 1010 -> 010 = 2므로 정답.

 

  • 5-7 = 101-111 = 101+001 = 110 -> 010(110의 2의 보수) -> -010 = -2이므로 정답.

 

 

예제(진짜 마지막)


 

Q. (기출문제) 178-37의 계산과정을 2의 보수로 계산하라!

 

  128 64 32 16 8 4 2 1
178의 2진수 1 0 1 1 0 0 1 0
37의 2진수 0 0 1 0 0 1 0 1
37의 1의보수 1 1 0 1 1 0 1 0
37의 2의보수 1 1 0 1 1 0 1 1
178 이진수 + 37의 2의보수 1 0 1 1 0 0 1 0
1 1 0 1 1 0 1 1
결과(최상위 비트 버림) 1 0 0 0 1 1 0 1

 

어때요, 참 쉽죠?

 

 

기 출 문 제