Goal
- 정수 표현 방법에 대한 이해
- 2의 보수를 사용하는 이유에 대해 설명할 수 있다
정수 표현
n개의 비트는 $2^n$개의 정수를 표현할 수 있다.
정수는 2가지 형태로 표현 될 수 있다.
- 부호를 표시 하는 정수 표현 방법
- 부호를 표현 하지 않는 정수 표현 방법
부호를 표현하지 않을 경우, 모든 비트를 모두 양의 정수를 표현하는데 사용하면 된다.
이 경우, 0 ~ $2^n-1$ 까지의 양의 정수를 표현할 수 있다.
부호를 표시하는 경우 양수와 음수를 구분하기 위해 최상위 비트(Most Significant Bit)를 부호 표기를 위해 남겨두는 방식을 사용한다.
하지만 단순히 최상위 비트를 1로 표시하는 방식에는 문제가 있다.
그래서 음수를 표현하기 위해서 2의 보수로 표현한다.
음수 표현 방법
① 부호비트방식
최상위 비트(Most Significant Bit)를 부호 표기를 위해 남겨두는 방식이다.
예를 들어 8 bit 자료의 경우에는 양수 1은 0000 0001, 음수는 1000 0001으로 표현하는 방식이다.
하지만, 이는 +0과 -0이라고 0이 두 개 존재하는 문제가 있고, 양수와 음수간의 연산이 어렵다는 단점이 있어 실수(float, double)방식의 표현에만 쓰인다.
② 2의 보수를 이용한 음의 정수 표현
보수(補數) : 각 자리의 숫자의 합이 어느 일정한 수가 되게 하는 수이다.
이를테면 1에 대한 10의 보수는 9, 4에 대한 15의 보수는 11의 개념이다. 2에 대한 1의 보수는 1이다.
제한된 자릿수의 정수만을 사용할 때는 음수를 표현할 때 음의 부호 표현을 사용하는 대신 보수를 이용한 표현을 사용할 수 있다.
예를 들면 십진법으로 네 자리까지만 숫자를 표현하고자 할 때 -3 대신 3의 9999에 대한 보수 9996으로 대신 표현하거나 10000에 대한 보수 9997로 표현이 가능하다.
만약 세자리까지만 표현한다고 하면 -3대신 3의 999에 대한 보수 996으로 대신 표현하거나 1000에 대한 보수 997로 표현 가능하다.
n진수에서 , (n-1) 보수 + 1 = n의 보수
(일반적으로 n진법의 보수에는 같은 수의 n보수법과, n-1보수법이 존재)
컴퓨터는 2진수를 사용하므로 2의 보수법과 1의 보수법이 존재한다.
1의 보수법
자릿수가 n개인 경우에 -m을 m의 $2^n-1(= 11...11_{(2)})$ 에 대한 보수로 표현하는 방식이다.
ex) 자릿수가 4개인 경우 -3을 1의 보수로 표현하면 다음과 같다.
3=($0011_{(2)}$)의 $1111_{(2)}$에 대한 보수로 표현할 수 있으므로 -3을 1의 보수로 표현하면 $0011_{(2)}$이 된다.
=> 이진수의 1의 보수는 비트의 반전이다.
2의 보수 = 1의 보수 + 1 이므로 반전 시킨 비트에 1을 더한 것과 같다.
그런데 여기서 신기한 것이 0011과 이 숫자의 2의 보수 1101을 더하면 다음과 같은 결과를 확인할 수 있다.
1011 + 0101 = 10000
최상위 1만 제외하면 0이 되는 것이다! (정해진 비트 자릿수를 넘어가기 때문에 최상위 비트 1은 버린다.)
3 + (-3) = 0
위의 비트 크기를 4bit로 한정한다면, 제일 높은 자리수 1을 버림으로서 뺄셈 연산을 할 수 있다는 것이다.
결론
2의 보수를 사용함으로써 다음 2가지 해결 됐다.
- 음수 표현이 가능하다
- 뺼샘 연산을 덧셈 연산으로 할 수 있다 (2의 보수를 취한다음 더하면 된다)
곱셈과 나눗셈 표현
2진수의 곱셈
2진수의 나눗셈
'컴퓨터 기본 지식' 카테고리의 다른 글
비트 연산에 대한 이해 (0) | 2020.06.24 |
---|---|
컴퓨터의 실수 표현 방법 (1) | 2020.06.24 |
컴퓨터의 수 표현 (0) | 2020.06.24 |
문자 인코딩에 대한 이해 (0) | 2020.06.23 |
스트림, 버퍼에 대한 이해 (0) | 2020.06.22 |