컴퓨터의 정수 표현 방식
컴퓨터에서는 모든 데이터가 0과 1의 이진수로 표현됩니다. 이진수를 사용하여 정수를 표현하는 방법은 다양한데, 컴퓨터의 정수 표현 방식에 대해 알아보겠습니다.
보수
보수(Complement)는 어떤 수에 대해 그 수와 더했을 때, 자릿수 올림을 발생하지 않는 보수 수(Complement Number)로 변환하는 것을 의미합니다. 보수는 주로 컴퓨터에서 음수를 표현하기 위한 방법으로 사용됩니다.
컴퓨터에서는 보수를 사용하여 음수를 나타냅니다. 보수에는 1의 보수와 2의 보수가 있습니다.
1의 보수
1의 보수(Ones' Complement)는 어떤 수에 대해 그 수의 모든 비트를 반전시킨 값입니다. 1의 보수는 2의 보수와 마찬가지로 보수의 한 종류입니다.
예를 들어, 8비트로 표현된 부호 있는 정수에서 -5를 1의 보수로 표현해보겠습니다.
- 5의 2진수 표현 구하기
5 = 00000101 (2진수)
- 1의 보수 구하기
5의 모든 비트를 반전시킨 값이 1의 보수입니다.
00000101 -> 11111010
2의 보수
2의 보수는 어떤 수의 보수를 구할 때, 그 수의 모든 비트를 반전시킨 후 1을 더한 값입니다.
예를 들어, 8비트로 표현된 부호 있는 정수에서 -5를 2의 보수로 표현해보겠습니다.
- 5의 2진수 표현 구하기
5 = 00000101 (2진수)
- 1의 보수 구하기
5의 모든 비트를 반전시킨 값이 1의 보수입니다.
00000101 -> 11111010
- 2의 보수 구하기
1의 보수에 1을 더한 값이 2의 보수입니다.
11111010 + 00000001 = 11111011
따라서 -5는 11111011로 표현됩니다.
이러한 방식으로 2의 보수를 사용하면, 뺄셈 연산을 덧셈 연산으로 처리할 수 있기 때문에 하드웨어 설계가 간단해집니다.
덧셈
2진수의 덧셈은 10진수의 덧셈과 계산하는 방식이 같습니다.
10진수 7 + 6 = 13을 2진수 덧셈으로 계산하면 아래와 같습니다.
111
+ 110
------
1101
뺄셈
컴퓨터는 덧셈만 가능하기 때문에 뺄셈은 보수를 이용해 덧셈으로 바꾼 후 계산해야 합니다. 즉, A - B 는 B의 보수를 구한 다음 A + (B의 보수)로 바꿔서 계산해야 합니다.
1의 보수 뺄셈
1의 보수를 이용한 뺄셈은 빼는 수의 1의 보수를 구한 다음 더합니다. 덧셈한 결과가 최상위 비트에서 자리올림이 생겼다면 최하위 비트에 1을 더하고, 자리올림이 생기지 않았다면 연산 결과에 대해 1의 보수를 구한 후 "-" 부호를 붙입니다.
10진수 7 - 6 = 1을 2진수 1의 보수 뺄셈으로 계산하면 아래와 같습니다. (자리올림이 생긴 1의 보수 뺄셈)
111 1의 보수 111
- 110 ------------> + 001
------ ------
1000 ------------> 1
최상위 비트 올림 발생으로 인해
최하위 비트에 1을 더하고 올림 제거
10진수 4 - 6 = -2를 2진수 1의 보수 뺄셈으로 계산하면 아래와 같습니다. (자리올림이 생기지 않는 1의 보수 뺄셈)
100 1의 보수 100
- 110 ------------> + 001
------ ------ 1의 보수 "-" 부호
101 ------------> 010 ------------> -2
2의 보수 뺄셈
2의 보수를 이용한 뺄셈은 빼는 수의 2의 보수를 구한 다음 더합니다. 덧셈 결과가 최상위 비트에서 자리올림이 생겼다면 자리올림을 제외한 나머지 부분이 연산 결과이고, 자리올림이 생기지 않았다면 연산 결과의 2의 보수를 구한 후 "-" 부호를 붙입니다.
10진수 7 - 6 = 1을 2진수 2의 보수 뺄셈으로 계산하면 아래와 같습니다. (자리올림이 생긴 2의 보수 뺄셈)
111 2의 보수 111
- 110 ------------> + 010
------ ------
1001 ------------> 1
자리올림 제외
10진수 4 - 6 = -2를 2진수 2의 보수 뺄셈으로 계산하면 아래와 같습니다. (자리올림이 생기지 않은 2의 보수 뺄셈)
100 2의 보수 100
- 110 ------------> + 010
------ ------ 2의 보수 "-" 부호
110 ------------> 010 ------------> -2
곱셈
2진수의 곱셈은 10진수의 곱셈 방식과 같습니다.
10진수 51 * 6 = 306을 2진수 곱셈으로 계산하면 아래와 같습니다.
110011
X 110
--------------
000000
110011
+ 110011
--------------
100110010
나눗셈
2진수 나눗셈 또한, 10진수의 나눗셈 방식과 같습니다.
10진수 38 / 6 = 6...2를 2진수 나눗셈으로 계산하면 아래와 같습니다.
110 (몫)
________
110 | 100110
-110
--------
111
-110
--------
10 (나머지)
고정 소수점 표현
고정 소수점 표현은 소수점 이하의 자리수가 고정된 표현 방식입니다. 이 방식에서는 소수점을 고정시키기 떄문에 소수점 이하 자리수가 모두 같은 숫자들을 표현하기에 용이합니다. 예를 들어, 0.123, 1.23, 12.3을 8비트의 고정 소수점 형태로 나타낸다면 다음과 같이 나타낼 수 있습니다.
수 | 부호 | 정수부 | 소수부 |
0.123 | 양수 | 00000000 | 01111011 |
1.23 | 양수 | 00000001 | 00110011 |
12.3 | 양수 | 00001100 | 00110000 |
이 방식은 고정된 자리수를 사용하기 때문에, 표현 가능한 범위가 한정되어 있다는 단점이 있습니다. 예를 들어, 8비트의 고정 소수점에서는 소수점 이하 4자리까지만 표현이 가능합니다. 따라서, 더 넓은 범위를 표현하려면 비트수를 늘려야 하므로, 더 많은 메모리를 사용하게 된다는 단점이 있습니다.
고정 소수점 표현은 실수 연산에 있어서 정확한 계산이 필요한 경우에 사용됩니다. 예를 들어, 금융 분야에서 돈의 단위 계산을 할 떄는 소수점 이하의 부분이 매우 중요하기 때문에, 고정 소수점 표현을 사용하여 정확한 계산을 수행합니다. 또한, 실수 연산을 지원하지 않는 하드웨어에서 실수 연산을 구현할 떄도 고정 소수점 표현이 유용하게 사용됩니다.
'컴퓨터 기초 > 정보의 표현' 카테고리의 다른 글
컴퓨터의 실수 표현 방식 (0) | 2023.02.19 |
---|---|
컴퓨터의 문자 표현 방식 (0) | 2023.02.19 |
진법 변환 (0) | 2023.02.19 |
수의 체계 (0) | 2023.02.19 |
댓글