보수

khbin·2023년 10월 24일

보수(Complement)

N의 보수 = 두 수의 합이 N이 되게 하는 수

컴퓨터의 음의 정수를 표현하기 위해서 고안 되었다.

컴퓨터는 덧셈밖에 하지 못하기 때문에 A - B → A + (-B) 로 바꾸어 계산이 이루어짐

예) 7의 10의 보수 → 3

2의 10의 보수 → 8

1의 보수

각 자릿 수의 값이 모두 1인 수에서 주어진 2진수를 빼면 1의 보수를 얻음.

쉽게 얘기해서 이진 수의 0 → 1, 1 → 0 으로 바꾸면 된다.

예) 최대 비트 수가 8일 때 7의 1의 보수를 구하라.

7 = 0000 0111

1111 1000

2의 보수

위에서 구한 1의 보수에 1을 더한 값이 2의 보수가 된다.

7의 1의 보수인

1111 1000

+0000 0001

→ **1111 1001**

2의 보수와 원래의 수를 더했을 때 값이 최대 비트 수를 넘어선 값을 제외하고

0이 되었다면 올바르게 구한 것이다.

0000 0111

+1111 1001

→1 0000 0000

뺄셈 하는 법

앞서 설명된 방법으로 2의 보수를 구한 후 더한 뒤 덧셈한 결과가 최상위 비트에서 자리 올림이 생겼다면 최상위 비트를 제외한 후 값이 결과가 된다.

예) 10 - 6 = 4

1010(2) - 0110(2)

→1010(2) + 1010(2) = 1 0100(2)

자리 올림이 생겨 최상위 비트 1을 제외한 0100(2) (=4) 이기 때문에 뺄셈이 올바르게 된 것을 확인할 수 있다.

https://velog.io/@octo__/2%EC%9D%98-%EB%B3%B4%EC%88%98%EB%B2%95-twos-complement

profile
틀린게 있다면 언제든지 알려주세요 감사합니다. 으라차차

0개의 댓글