Algorithm & Data Structure/Background

수의 표현과연산 - 부호화 절대값, 1의 보수, 2의 보수

남혁준 2019. 11. 14. 00:50

컴퓨터에서의 수의 표현

컴퓨터는 데이터를 워드(word)단위로 처리한다.

최상위 비트

msb

... ... ... ... ... ...

최하위 비트

lsb

한 워드에서 최상위 비트를 부호비트로 사용하고 나머진 데이터 비트로 사용하여 표현한다.

 

보수란? 보충해주는 수를 의미하는 것으로 어떤 수 a에 대한 n의 보수는 a와의 합이 n이 되는 수이다.

보수를 쓰는 이유는 컴퓨터에선 '-'(마이너스)에 대한 개념이 없기때문에 뺄셈 연산을 위해선 수에 보수를 취해 덧셈연산으로 대체한다.

 

절대값 표현

워드의 데이터 비트를 데이터의 절대값으로 표현

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

 

1의 보수 (1's Complement)

어떤 수 a와의 합이 1이 되는 수

표현 방법 : 모든비트를 반전한다 ( 0 -> 1, 1 -> 0)

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

 

2의 보수(2's Complement)

어떤 수 a와의 합이 2가 되는 수

표현 방법 : 1의 보수를 취한 비트에 1을 더한다

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

 

 

10진수 변환 방법 

1의 보수

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

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

 

2의 보수

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

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

 

보수 연산

1의 보수 연산

결과가 초과(overflow) : 초과된 1을 다시 한 번 결과에 더한다

결과가 음수가 나오는 경우 : 결과를 1의 보수로 변환한다.

 

2의 보수 연산

결과가 초과 : 초과된 1을 무시한다.

결과가 음수가 나오는 경우 : 결과를 2의 보수로 변환한다.

 

데이터 표현 범위

절대값 표현 : -(2^(n-1) - 1) ~ (2^(n-1) - 1)

1의 보수 표현 : -(2^(n-1)-1) ~ (2^(n-1) - 1)

2의 보수 표현 : -2^(n-1) ~ (2^(n-1) - 1)

 

*부호비트는 그대로 사용

*양수의 경우는 절대값,1의 보수 2의 보수가 모두 같다, 즉 양수든 음수든 1의 보수와 2의 보수로 모두 표현할 수 있으나, 음수일 경우에만 부호비트를 제외한 데이터 비트의 형태가 다르다.

 

Reference

컴퓨팅 사고력을 키우는 이산수학(한빛아카데미) - 박주미 지음