본문 바로가기
CS 공부/컴퓨터 구조

수의 표현

by 학습하는 청년 2024. 12. 31.

최종 수정 : 24.12.31

수의 표현

컴퓨터는 프로그램을 사용하여 데이터를 처리하는 장치이다. 데이터는 수치 데이터(numeric data)와 비수치형 데이터(non-numeric data)로 구분할 수 있다.

  • 수치 데이터
    ☞ 컴퓨터의 내부적 표현으로 산술연산이나 논리연산에 직접 사용된다. 고정 소수점으로 표현되는 정수와 부동 소수점으로 표현되는 실수로 구분된다.

  • 비수치 데이터
    ☞ 산술연산에 사용되는 수치 데이터를 제외한 모든 문자, 기호, 하늘 등을 코드로 나타낸 것이다. 크게 텍스트를 위한 데이터와 텍스트가 아닌 데이터로 구분할 수 있다. 대표적인 표현으로 BCD 코드, ASCII 코드, EBCDIC 코드 등이 있고, 텍스트가 아닌 데이터로는 멀티미디어 데이터가 있다.

2진수 데이터에서 1자리를 1비트(bit)라고 한다. 즉, 2진수 8자리는 8비트이다. 2진수 4비트를 1니블(nubble), 8비트를 1바이트(byte), 보통 중앙처리장치의 레지스터의 폭(비트 수)를 워드라 한다. 다른 방법으로 표현하면 메모리의 주소를 지정하고 한 번에 읽어오는 데이터의 길이(비트 수)이다.


1. 정수표현

컴퓨터는 두 가지 상태만 나타낼 수 있는 비트로 표현하기 때문에 2진법을 사용한다. 정수는 0과 양의 정수, 음의 정수로 구분되는데, 0과 양의 정수만 포함하는 정수를 무부호 정수(unsigned integer)라 하고 음수까지 포함할 경우 유부호 정수(signed integer)라고 한다.

1) 무부호 정수

4비트로 구성된 2진수 1101는 다음과 같이 10진수로 13이다.

1101 => 1 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 13

 

4비트로 구성된 수 13을 32비트로 표현하면 다음과 같이 서행(leading) 0을 28개 덧붙이면 된다.

00000000000000000000000000001102

이와 같이 선행 0을 채우는 것을 0-확장(zero extension)이라고 한다. 선행 -은 수의 크기와는 상관이 없지만 컴퓨터에서 비트 수가 정해진 데이터 표현에는 중요하다.

 

2) 유부호 정수

0의 양수는 진법 변환 방식을통해 2진수로 변환하여 표현하지만, 부호가 있는 2진수는 부호화 - 크기(sign-magnitude), 1의 보수(1's complement), 2의 보수(2's complement)와 같은 방식을 이용하여 음수를 표현한다.

 

부호화 - 크기 방식

☞ 부호화 - 크기 방식은 MSB를 부호 비트로 사용하고, 나머지 비트는 크기로 사용한다. MSB가 0일 경우 양수를, 1일 경우는 음수를 나타낸다. 부호화 - 크기 표현은 간단하지만 부호 비트를 별도로 처리하므로 절대 크기를 나타내는 수의 범위가 줄어든다. 즉, n비트 2n개가 아닌 2의 n+1제곱 개가 아닌 2의 n-1 제곱 개의 워드를 표현할 수 있다. 또한 0을 표현하는 방법은 다음과 같이 두 가지 형태가 있다.

(0 0000000) ==> (+0) (1 0000000) ==> (-0)

 

☞ 1의 보수 방식

이러한 부호화 - 크기 표현의 한계를 극복하기 위해 보수 표현을 활용한다.

 

1의 보수 방식은 음수를 표현하기 위해 각 비트를 0과 1 사이에 상호 반전하는 것이다.

  +13 ==> (0 0001101) +43 ==> (0 0101011)
1의 보수 -13 ==> (1 1110010) -43 ==> (1 1010100)

 

2의 보수 방식

☞ 2의 보수 방식도 양의 정수와 +0을 부호화 - 크기 방식 및 1의 보수 방식과 동일하게 표현한다. 그러나 -0이란 표현은 없고, 음의 정수는 1의 보수 방식보다 1을 크게 표현한다. 2의 보수 방식도 부호화 - 크기 방식이나 1의 보수 방식과 같이 MSB가 부호 비트이다.

  +13 ==> (0 0001101) +43 ==> (0 0101011)
1의 보수 -13 ==> (1 1110010) -43 ==> (1 1010100)
2의 보수 -13 ==> (1 1110011) -43 ==> (1 1010101)

 

비트 확장

비트 확장(bit extension)은 데이터ㅢ 비트 수를 늘리는 연산으로, 8비트 데이터를 16비트로 확장하는 경우처럼 연산 과정에서 큰 수를 표현하기 위해 비트 수를 늘려야 할 때 이용되는 방법이다.

 

부호화 - 크기 표현

확장 비트에서 최상위 자리에는 부호 비트를 옮기고 나머지는 0으로 채운다.

+21 ==> (00010101) +21 ==> (00000000 00010101)  
-21 ==> (10010101) -21 ==> (10000000 00010101) 부호화 - 크기 표현

 

2의 보수 표현

확장 비트를 부호 비트와 동일한 값으로 채우는 것을 부호 비트 확장(sign bit extension)이라고 한다.

+21 ==> (00010101) +21 ==> (00000000 00010101)  
-21 ==> (11101011) -21 ==> (11111111 11101011) 부호화 - 크기 표현

2. 실수 표현

1) 부동소수점

컴퓨터는 실수를 부동소수점 수(floating-point number)로 표현한다. 부동소수점 표현은 수학의 과학 표기 방법을 응용한 것이다.

과학 표기 방법은 실수를 부호(sign), 가수(mantissa, significant, or fraction), 가수(base), 지수(exponent)로 표시한다.

 

부동소수점 수의 일반적 형식

부호
비트
지수 필드 가수 필드

컴퓨터는 실수를 푯할 때에도 2진법을 사용한다. 10진수에 대한 과학 표기법을 2진수에도 적용할 수 있다. 컴퓨터의 2진수 부동소수점 표현에서는 기수를 표현하지 않고 부호, 가수, 지수만으로 실수를 표현한다. 정수와 마찬가지로 전체 수에 대한 부호를 부호 비트로 표현한다.


참고

독학사 교재

'CS 공부 > 컴퓨터 구조' 카테고리의 다른 글

주소지정방식  (0) 2025.01.01
명령어 구성과 형식  (0) 2024.12.31
보수  (0) 2024.12.31
진법과 진법변환  (0) 2024.12.31
순차논리회로  (0) 2024.12.26

댓글