이산수학

보수의 개념

ssongk 2021. 12. 4. 11:05

보수

보수란 보충해주는 수를 의미한다. 

어떤 수 a에 대한 n의 보수는 a와의 합이 n이 되는 수이다.

1에 대한 10의 보수 : 1 + x = 10 -> x=9

3에 대한 5의 보수 : 3 + x = 5 -> x=2

 

n진수에선 n의 보수와 n-1의 보수가 존재한다.

10진수에는 10의 보수와 9의 보수가 존재하고, 8진수는 8의 보수와 7의 보수가 존재한다.

 

2진수(0과 1로 구성)를 사용하는 컴퓨터에는 2의 보수와 1의 보수가 존재한다.

1의 보수 : 어떤 수 a와의 합이 1(이진수로 1)이 되는 수

0에 대한 1의 보수 : 0 + x = 1 -> x=1

1에 대한 0의 보수 : 1 + x = 0 -> x=0

2의 보수 : 어떤 수 a와의 합이 2(이진수로 10)이 되는 수

0에 대한 2의 보수 : 0 + x = 0 -> x=0

1에 대한 2의 보수 : 1 + x = 10 -> x=1

 

2진수에서 1의 보수는 0은 1로, 1은 0으로 바꾸면 된다.

2의 보수에서 0에 대한 2의 보수는 0인데 이는 0에 대한 1의 보수인 1에 1을 더한 결과와 같다.(1 + 1 = 10)

1에 대한 2의 보수는 1이고 이는 1의 대한 1의 보수인 0에 1을 더한 결과와 같다.(0 + 1 = 1)

결과적으로 2진수 a에 대한 2의 보수는 a에 대한 1의 보수에 1을 더한 결과이다.

53의 2진수는 110101이고 1의 보수는 001010, 2의 보수는 001011이다. 

 

컴퓨터에서 수의 표현

컴퓨터에서는 한 워드에서 최상위 비트를 부호 비트(양수:0, 음수:1)로 사용하고 나머지는 데이터 비트로 사용한다.

표현 방식에는 3가지가 있다.

 

1. 부호화-절댓값

워드의 데이터 비트를 데이터의 절댓값으로 표현한다, 최상위 비트로 부호를 표현하고 나머지 비트에 정수 값을 적는다.

연산의 결과가 정확하지 않으며, 0에 대한 표현이 +0과 -0으로 두 가지가 발생한다.

 

2. 부호화-1의 보수

부호화-절댓값 표현에서 음수에 대해 1은0, 0은1로 변환하여 표현한다.

연산의 결과가 정확하고, 0에 대한 표현이 +0과 -0으로 두 가지가 발생한다.

 

3. 부호화-2의 보수

부호화-1의 보수 표현에 1을 더하여 표현한다.

연산의 결과가 정확하고, 0에 대한 표현이 한 가지로 통일된다.

 

양수는 세 가지 방식에서 모두 같다.

 

보수의 10진수 변환

1워드가 n비트일 때, 부호화-1의 보수로 표현된 값을 10진수로 변환하는 방법은 2가지가 있다.

1. -(2n-1-1)+(데이터 비트의 10진수 표현)

2. 주어진 1의 보수를 다시 1의 보수로 변환한 후, 10진수로 변환

 

1워드가 n비트일 때, 부호화-2의 보수로 표현된 값을 10진수로 변환하는 방법은 2가지가 있다.

1. -(2n-1)+(데이터 비트의 10진수 표현)

2. 주어진 2의 보수를 다시 2의 보수로 변환한 후, 10진수로 변환