본문 바로가기

보수 (補數, complement)

728x90

 

보수 (補數, complement)

· '보충을 해주는 수'란 의미로 컴퓨터가 뺄셈을 할 때 사용하는 개념입니다.

- 컴퓨터는 뺄셈을 할 수 없기 때문에 "x - y"라는 뺄셈은 "x + -y"라는 덧셈으로 전환해서 처리하는데 이때 "y"를 음수로 변환한 "-y"가 보수가 됩니다.

· 2진법으로 표현된 어떤 수를 보수로 변환하는 걸 "보수 표현"이라 합니다.

 

 

 

보수 표현

· '보수 표현'을 알기 전에 우선 '커다란 2의 제곱수'를 알아야 합니다.

- '커다란 2의 제곱수'란 2진법으로 표현된 '어떤 수'보다 ①한 자릿수가 더 많고, ②1로 시작하며, ③나머지는 모두 0인 수입니다.

▴ 예시

▪ 어떤 수 : 110(2)

▪ 커다란 2의 제곱수 : 1000(2)

· '어떤 수'와 '어떤 수의 보수'를 10진수로 변형했을 때 전혀 다른 값이지만, 컴퓨터는 이를 처리할 때 '보수'는 원형이 되는 '어떤 수'의 음수로 처리하도록 설계되어 있기 때문에 뺄셈으로 처리됩니다.

▴ 계산식 : 10 - 6.

▴ 어떤 수 : 6 = 110(2)

▴ 어떤 수의 1의 보수 : 001(2) = 1

▴ 어떤 수의 2의 보수 : 010(2) = 2

▴ 하지만 '1'과 '2'는 '6'의 보수이므로 컴퓨터는 '10 + -1', '10 + -2'가 아니라 '10 + -6'으로 처리.

 

 

1의 보수 표현

· '1의 보수 표현'이란 '어떤 수'의 '커다란 2의 제곱수에서 1(2)을 뺀 값'에서 '어떤 수'를 빼서 얻은 값입니다.

- 결국 '어떤 수'를 뒤집은 값이 '1의 보수 표현'이 됩니다.

- 예시

▴ 어떤 수 : 110(2)

▴ 커다란 2의 제곱수 : 1000(2)

▴ 커다란 2의 제곱수에서 1(2)을 뺀 값 : '커다란 2의 제곱수' - 1(2) = 1000(2) - 1(2) = 111(2)

▴ 1의 보수 표현 : '커다란 2의 제곱수에서 1(2)을 뺀 값' - '어떤 수' = 111(2) - 110(2) = 001(2)

 

 

2의 보수 표현

· '2의 보수 표현'이란 '어떤 수'의 '커다란 2의 제곱수'에서 '어떤 수'를 빼서 얻은 값입니다.

- '1의 보수 표현'이 '( 커다란 2의 제곱수 - 1 ) - 어떤 수'였고 '2의 보수 표현'은 '커다란 2의 제곱수 - 어떤 수'이므로 결국 '1의 보수 표현'에 '1(2)'을 더한 값이 '2의 보수 표현'이 됩니다.

- 예시

▴ 어떤 수 : 110(2)

▴ 커다란 2의 제곱수 : 1000(2)

▴ 2의 보수 표현 : '커다란 2의 제곱수' - '어떤 수' = 1000(2) - 110(2) = 010(2)

▴ 1의 보수 표현 + 1(2) = 001(2) + 1(2) = 010(2) = 2의 보수 표현

 

 

 

#00700 #한설날

 

728x90