컴퓨터 구조 요약 - 3. 데이터의 표현

3.1. 데이터의 종류(Data Types)

숫자, 영문자, 기호 등의 데이터들은 이진수의 형태로 레지스터에 들어가야 한다. 그러나 사람의 경우 다른 진법을 사용하는 것이 편리할 수 있다. 8, 16, 10진법 등, 십진수의 BCD(Binary-coded decimal) 표시, 영문자의 ASCII 표시 등이 있다.

3.2. 보수(Complements)

r진법에는 (r-1)의 보수와 r의 보수가 있다.

3.2.1. (r-1)의 보수( (r-1)’s Complement )

(rn - 1) - N 으로 정의된 보수이다.
10진법의 경우, 각 자리의 숫자를 9에서 빼면 9의 보수이다. 12345에 대한 9의 보수는 99999 - 12345 = 87654 이다.
2진법의 경우, 각 자리의 숫자를 1에서 빼면 1의 보수가 되며, 이는 0을 1로, 1을 0으로 바꾼 것과 같다.

3.2.2. r의 보수( (r)’s Complement )

rn - N 으로 정의된 보수이다.
(r-1)의 보수에 1을 더하는 방법이 있다.
2진법의 경우, 맨 아랫자리의 0들과 맨 처음의 1을 그대로 두고, 나머지 0과 1을 1과 0으로 바꾸는 방법도 있다.

1010100 -> 0101100

3.2.3. 부호없는 숫자의 뺄셈(Subtraction of Unsigned Numbers)

r의 보수는 부호없는 숫자의 뺄셈에 활용된다.

  1. 피감수 M에 감수 N에 대한 r의 보수 더한다. M + (rn - N) = M - N + rn
  2. M >= N 이라면, end 캐리 rn가 생기므로, 이를 무시하여 M - N를 얻는다.
  3. M < N이라면, rn - (N - M)이므로, 결과값에 r의 보수를 취하고 앞에 뺄셈 부호를 붙인다.

3.3. 고정 소수점 표현(Fixed-Point Representation)

컴퓨터에서는 숫자의 맨 왼쪽 비트를 부호 비트로 정하고 0은 양수를, 1은 음수를 나타낸다.

레지스터에서 이진 소숫점을 나타내는 데에는 고정 소수점, 부동 소수점, 두 가지 방법이 있다.
고정 소수점에서는 이진 소수점이 동일한 위치에 존재한다. 보통 레지스터의 맨 왼쪽 혹은 오른쪽에 둔다.
부동 소수점에서는 두 번째 레지스터에 값을 저장하는데, 이 값은 첫 번째 레지스터의 소수점 위치를 나타낸다.

3.3.1. 정수 표현(Interger Representation)

0 0000111 // +7, 주로 부호화된 보수 표현을 사용한다.

1 0000111 // 부호 절대값 표현
1 1111000 // 부호화된 1의 보수 표현
1 1111001 // 부호화된 2의 보수 표현

3.3.2. 산술 가산(Arithmetic Addtion)

보수화된 2의 보수 표현에서는, 부호를 포함하여 두 수를 더하고 부호 비트의 캐리를 무시한다.

3.3.3. 산술 감산(Arithmetic Subtraction)

2의 보수일 때, 감수의 2의 보수를 취한 후, 가산한다.

3.3.4. 오버플로(Overflow)

부호 비트 캐리와 부호 비트 밑 캐리의 XOR 값이 1이면 오버플로이다.

3.3.5. 십진 고정 소수점 표현(Decimal Fixed-Point Representation)

BCD로 십진수 4385를 나타내는 데에는 각 숫자마다 네 개씩의 플립플롭, 총 16개가 사용된다. 많은 플립플롭이 사용되지만, 사람이 십진수를 사용하므로 입출력에서 편리한 이점이 있다.

0100 0011 1000 0101

가감산에 보통 10의 보수를 사용하며, 이진수에서와 같은 방법을 사용한다. 이는 BCD형태의 십진수를 계산할 수 있는 회로에서 수행될 수 있다.

3.4. 부동 소숫점 표현(Floating-Point Representation)

부동 소수점 표현은 부호화된 고정 소수점 숫자를 나타내는 가수(mantissa)와 십진 또는 이진 소수점의 위치를 알려주는 지수(exponent)로 구성되어있다.

m x re (m은 가수, r은 진법, e는 지수), +(.0111000) x 2+4, +0.523 x 10+4

만약 가수의 최상위 비트가 1이라면, 이는 정규화(normalized)되었다고 한다. 00011010을 왼쪽 시프트하여 11010000으로 만들고 지수에서 3(23=8)을 빼주어 정규화를 할 수 있다. 정규화된 숫자는 부동 소수점 표현에서 가장 높은 정밀도를 제공한다.

3.5. 기타 이진 코드(Other Binary Code)

8421, 2421, Excess-3, Gray 코드 등이 있다.

3.6. 에러 검출 코드(Error Detection Codes)

이진 정보를 전송할 때 외부 잡음으로 인해 비트가 바뀌는 에러가 생길 수 있다. 송신측의 패리티 발생기 출력과 수신 측의 패리티 검사기 출력이 다르면 에러가 생긴 것이다. 하지만, 두 비트가 동시에 에러라면 에러 검출이 불가능하다.

댓글남기기