수의 표현과연산 - 부호화 절대값, 1의 보수, 2의 보수
컴퓨터에서의 수의 표현
컴퓨터는 데이터를 워드(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
컴퓨팅 사고력을 키우는 이산수학(한빛아카데미) - 박주미 지음