수학에서 보수(Complement)

tktj12·2025년 5월 15일
0

수학에서 보수의 정의는 생각보다 단순하지 않다.

1010진법에서, 22에 대한 99의 보수는 77이다. 그런데 1212에 대한 99의 보수는 3-3이 아니라 8787이다.
또, 33에 대한 1010의 보수는 77이다. 3333에 대한 1010의 보수는 6767이다. 그런데 00에 대한 1010의 보수는 1010이 아니라 00이다.

이걸 봤을 때, "보충하는 수"라는 말은 완벽한 설명은 아니다.




보수의 정의

그렇다면 보수는 어떻게 정의할 수 있을까?

정의 A

rr 진법(radix)에서 nn 자릿수 숫자 xx에 대해

rr의 보수는 rnxr^n - x 이고,

(r1)(r-1)의 보수는 rnx1r^n - x - 1 이다.

따라서, 1010진법에서 22자릿수 숫자 3333에 대한 1010의 보수는 6767이고, 99의 보수는 6666이다.

그런데 이건 이상하다. 이대로면 00에대한 1010의 보수는 1010이다.



정의 B

rr 진법에서 nn 자릿수 숫자 xx에 대해

rr의 보수는 (rnx)modrn(r^n - x) \bmod r^n 이고,

(r1)(r-1)의 보수는 rnx1r^n - x - 1 이다.

이렇게 정의하면 rr진법에서 00에 대한 rr의 보수도 00이 된다.
참고로 0에 대한 9의 보수는 9이다.



(r2)(r-2)의 보수?

(r2)(r-2) 부터는 필요가 없어서 정의가 없는 것 같다. 그러니깐 누가 1010진법에서 88의 보수를 묻거든 그런건 없다고 말하면 된다.

profile
C++, 알고리즘, UE 공부

0개의 댓글