본문 바로가기
Programming/Knowledge

2의 보수

by OKOK 2018. 5. 8.

2의 보수 

2의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급됩니다. 2의 보수를 구하기 위해서는 2가지 방법이 있으며, 첫째로는 주어진 이진수보다 한 자리 높고 가장 높은 자리가 1이며 나머지가 0인 수에서 주어진 수를 빼서 얻은 수가 2의 보수입니다. 두번째로 주어진 이진수의 모든 자리의 숫자를 반전시킨 뒤 여기에 1을 더하면 2의 보수를 얻을 수 있습니다.  


예를 들어 8자리의 이진수 01001011의 2의 보수를 구하면 아래와 같습니다. (십진수 75)

8+1=9자리의 비트 100000000 에서 8자리 비트 01001011 을 뺍니다. 그럼 10110101 이 나옵니다.


두번째 방법으로는 1의 보수를 이용하여 2의 보수를 구하면 됩니다.

01001011 의 모든 자리의 수를 반전시킵니다. 그럼 10110100 이 나옵니다. 여기에 1을 더합니다. 101101001 이 됩니다. 보수를 구하며 한 자리가 더 길어진 경우에는 가장 높은 자리의 숫자를 버리면 됩니다.


2의 보수를 이용한 뺄셈을 해보겠습니다. 100-75 는 100+(-75) 이므로

01100100 + 10110101 = 100011001 이 됩니다. 새로 생긴 가장 높은 자리의 숫자를 뺴고 남은 00011001은 십진수로 25와 같스비다. 2의 보수에서는 가장 높은 자리에서 자리 올림이 발생시 무시하므로 1의 보수보다 계산이 간단합니다.