언어: 보수의 개념(Concept of Complement)

C언어: 보수표현


/// 보수(補數)의 개념

보수(補數)란 어떤 수(가칭:전체수(universal number))에 대한 수 A를 보충해주는 수.

  집합에서의 추정: 여집합(complement set)은 전체집합(universal set)집합 중 A의 원소가 아닌 것들의 집합.
  (The complement of set A, denoted by A' , is the set of all elements in the universal set that are not in A.)
  참고: Complement (set theory)

보수개념의 혼동
  10진법 10000(10)에 대해서는 "10의 보수 표현법" 이라고 표현하고
    9999(10)에 대해서는 "9의 보수 표현법" 이라고 표현
  9진법 10000(9)에 대해서는 "9의 보수 표현법"
    8888(9)에 대해서는 "8의 보수 표현법"이라고 표현(?)

집합(set)
  여집합(complement set)은 전체집합(universal set)집합 중 A의 원소가 아닌 것들의 집합
  U = A U A' : 전체집합 U에 대한 A의 여집합 A'

수(number)에 적용
  보수란 어떤 수(가칭:전체수(universal number))에 대한 수 A를 보충해주는 수 라고 정의 - 가정
  UN = A + A' : 전체수 UN에 대한 A의 보수 A'
  Univeral Number = 수(The Number) + 보수(The Complement of a Number)
    예) 10 = 4 + 6 : 10에 대한 4의 보수는 6, 6의 보수는 4
     100 = 2 + 98 : 100에 대한 2의 보수는 98, 98의 보수는 2

보수를 표현하는 방식(자릿수가 정해져 있다고 가정)
  예) 10진법 4자릿수 1111(10)의 보수는?
  UN:10000(10)에 대한 1111(10)의 보수는 8889(10) -> 10000(10) = 1111(10) + 8889(10)
  UN: 9999(10)에 대한 1111(10)의 보수는 8888(10) -> 9999(10) = 1111(10) + 8888(10)

4자릿수에 대해 10진법에서 2진법까지 정리
  10진법 UN:10000(10) = 1111(10) + 8889(10) -> 1111(10)의 보수는 8889(10)
       9999(10) = 1111(10) + 8888(10) -> 1111(10)의 보수는 8888(10)
   9진법 UN:10000(9) = 1111(9) + 7778(9) -> 1111(9)의 보수는 7778(9)
       8888(9) = 1111(9) + 7777(9) -> 1111(9)의 보수는 7777(9)
   8진법 UN:10000(8) = 1111(8) + 6667(8) -> 1111(8)의 보수는 6667(8)
       7777(8) = 1111(8) + 6666(8) -> 1111(8)의 보수는 6666(8)
   7진법 UN:10000(7) = 1111(7) + 5556(7) -> 1111(7)의 보수는 5556(7)
       6666(7) = 1111(7) + 5555(7) -> 1111(7)의 보수는 5555(7)
   6진법 UN:10000(6) = 1111(6) + 4445(6) -> 1111(6)의 보수는 4445(6)
       5555(6) = 1111(6) + 4444(6) -> 1111(6)의 보수는 4444(6)
   5진법 UN:10000(5) = 1111(5) + 3334(5) -> 1111(5)의 보수는 3334(5)
       4444(5) = 1111(5) + 3333(5) -> 1111(5)의 보수는 3333(5)
   4진법 UN:10000(4) = 1111(4) + 2223(4) -> 1111(4)의 보수는 2223(4)
       3333(4) = 1111(4) + 2222(4) -> 1111(4)의 보수는 2222(4)
   3진법 UN:10000(3) = 1111(3) + 1112(3) -> 1111(3)의 보수는 1112(3)
       2222(3) = 1111(3) + 1111(3) -> 1111(3)의 보수는 1111(3)
   2진법 UN:10000(2) = 1111(2) + 0001(2) -> 1111(2)의 보수는 0001(2)
       1111(2) = 1111(2) + 0000(2) -> 1111(2)의 보수는 0000(2)

정리
  1. N자릿수 B진법 X의 보수 = UN:(B^N) - X
  2. N자릿수 B진법 X의 보수 = UN:(B^N-1) - X

결론(아래와 같은 표현의 필요성)
  (UN:(B^N)), (UN:(B^N-1))에서 B의 숫자에 따라 진법을 알 수 있습니다.
  예) (UN:(2^N)), (UN:(2^N-1)) -> 2진법
     (UN:(2^N))에 대한 보수체계법
     (UN:(2^N-1))에 대한 보수체계법

※ 제가 잘못알고 있거나 잘못 표현한것이 있다면 지적부탁드립니다.

* 실행환경: Linux(5.7.6-x86_64-linode136)
* 컴파일러: gcc (Ubuntu 6.5.0-2ubuntu1~14.04.1) 6.5.0 20181026


- 당신을 응원합니다. -

댓글

이 블로그의 인기 게시물

파이썬[Python]: 내장함수 - from_bytes 메서드

파이썬[Python]: 내장함수 - __len__ 메서드

파이썬[Python]: kivy - 한글 사용

파이썬[Python]: 내장함수 - bit_length 메서드

C 언어: sin 함수, cos 함수, tan 함수