본문 바로가기
자료구조

2진수 정수 표현 방식

by asd135 2024. 3. 13.
728x90

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