1. 부호 절댓값
가장 왼쪽 비트를 부호 비트로 사용하여 양수(0)와 음수(1)를 구별한다.
5를 예시로 나타내면
부호 비트(0) | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
부호 비트가 0일 경우 양수, 1일 경우 음수를 나타낸다.
이 방식은 0을 +0(0000 0000)과 -0(1000 0000) 두 가지 방식으로 표현할 수 있다.
0이 두 개 있으면 생기는 문제점
1. 같은 값을 나타내지만 비트 표현이 다르다.
2. 0으로 나누기 연산을 할 때 +0과 -0이 다르게 취급되어서는 안 되기 때문에 개발과정에서 추가적인 예외 처리를 해야 할 수 도 있다.
3. 0 두 개를 처리하는 과정에서 추가적인 메모리 사용과 처리 시간이 늘어난다.
2. 1의 보수
부호 절댓값 방식과 마찬가지로 맨 앞 비트가 양수 또는 음수를 나타낸다.
+5
부호 비트(0) | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
음수를 표현할 때 1을 0으로 0을 1로 변환한다.
-5
부호 비트(1) | 1 | 1 | 1 | 1 | 0 | 1 | 0 |
덧셈 연산 시 반올림이 발생할 경우 결괏값에 1을 더해야 한다.
A = +15 = 00001111 (1의 보수 변환 필요 없음)
B = -1 = 11111110 (1의 보수 변환을 적용한 -1)
= 00001101 (반올림 발생)
00001101 + 00000001 = 00001110 (14)
1의 보수도 부호 절댓값과 마찬가지로 +0, -0을 표현할 수 있다.
3. 2의 보수
2의 보수 방식은 현재 컴퓨터에서 많이 사용되는 방식이다.
+0, -0의 구분이 없이 하나의 0만 존재한다는 것과 덧셈과 뺄셈 연산을 동일한 회로에서 처리할 수 있다는 장점이 있다.
2의 보수 방식에서는 1의 보수에 값에 1을 더함으로써 음수를 나타낸다.
A = +15 = 00001111 (1의 보수 변환 필요 없음)
B = -1 = 11111110 (1의 보수 변환을 적용한 -1)
11111111 (-1의 보수 값에 먼저 1을 더한다)
00001111 + 11111111 = 00001110 (14) 반올림은 무시한다.
'자료구조' 카테고리의 다른 글
실수 표현 방식(부동 소수점) (0) | 2024.03.14 |
---|---|
10진수 표현 방식(pack, unpacked) (0) | 2024.03.06 |