컴퓨터 이론/논리회로 & 컴퓨터구조

02. 음수 표현과 산술 연산

컴퓨터공부용 2023. 12. 3. 16:38

음수 표현 방법

음수를 표현하기 위해서는 일반적으로 보수를 이용하여 음수를 표현하게 된다.
보수를 이용한 표현 방법 중에서도 부호와 절대치, 1의 보수, 2의 보수 표현방법에 대해서 살펴보자

부호와 절대치

가장 왼쪽 비트(MSB)를 부호 비트, 나머지 비트는 값의 절댓값을 나타내는 방법이다
즉, 0011은 부호비트가 0 양수 011은 십진수로 3을 나타내므로 +3을 의미하고,
1011은 부호비트가 1 음수 011은 십진수로 3을 나타내므로 -3을 의미한다.
수의 표현 범위는 n비트 일때, 1비트가 부호이므로 -(2^(n-1)-1) ~ (2^(n-1)-1)이다.
위 예시의 경우에는 n=4이므로 표현범위는 -7 ~ 7이다.


1의 보수

1의 보수는 2진수의 모든 비트를 반전시킨 형태이다.
즉, 0011은 십진수로 3을 나타내므로 +3을 의미한다.
1100은 십진수로 12이지만 보수 표현으로는 -3을 의미한다.

그럼 1100처럼 해당수가 양수 표현인지 보수 표현인지 어떻게 알아야 할까?
1의 보수의 표현 범위는 부호화절대치와 동일하다.
n비트 일 때, 1비트가 부호이므로 -(2^(n-1)-1) ~ (2^(n-1)-1)이다.
즉, MSB가 1인 경우에는 보수표현이라는 것을 알 수 있다.

2의 보수

2의 보수는 1의 보수에 1을 더한 값이다.
즉 0011은 양수이므로 십진수 3을 나타낸다.
그럼 -3을 나타내기 위해서는 0011을 1의 보수 표현인 1100에 1을 더한 1101이 된다.

2의 보수는 앞선 표현 방식들과는 다르게 표현 범위가 조금 다르다.

2의 보수의 표현 범위는 n비트 일 때 -(2^(n-1)) ~ (2^(n-1)-1)로 음수 표현 시 하나의 수를 더 표현할 수 있다.

 

이진수의 산술 연산

덧셈은 일반적인 10진수 덧셈과 계산 방식이 동일하다.

 

뺄셈은 컴퓨터 내부에서 덧셈만 가능하므로 뺄셈은 보수의 덧셈으로 바꾸어 계산한다.

1의 보수 뺄셈 : 빼는 수의 1의 보수를 구한 다음 더한다. 덧셈 결과가 최상위 비트에서 자리올림이 생겼다면 최하위 비트에 1을 더하고, 아니라면 1의 보수를 구한 후 - 부호를 붙인다.

2의 보수 뺄셈 : 빼는 수의 2의 보수를 구한 다음 더한다. 덧셈 결과가 최상위 비트에서 자리올림이 생겼다면 자리 올림을 제외한 나머지가 연산 결과이고, 아니라면 2의 보수를 구한 후 - 부호를 붙인다. 또한 MSB직전 자리 올림수와 최종 자리올림수가 같은 값이면 정상, 다른 값이면 오버플로가 발생한 것이다.