Computer Science/Computer Architecture

[컴퓨터ꡬ쑰] Data Representation

μ΄νƒœν™ 2022. 9. 7. 01:03

πŸ€” Data Representation

이 μž₯μ—μ„œλŠ” 컴퓨터가 μ–΄λ–€ μ‹μœΌλ‘œ 연산을 μ§„ν–‰ν•˜λŠ”μ§€μ— λŒ€ν•΄ λ°°μ›Œλ³΄κ² μŠ΅λ‹ˆλ‹€.

Complements, Fixed-Point Representation, Floating-Point Representation, Error Detection Codes등에 λŒ€ν•΄ λ°°μ›λ‹ˆλ‹€. 

 

 

 

 

 

πŸ”Ž Complements

μ»΄ν“¨ν„°μ—μ„œ λΊ„μ…ˆκ³Ό 논리 연산을 μ‰½κ²Œ ν•˜κΈ° μœ„ν•΄μ„œ λ³΄μˆ˜κ°€ μ‚¬μš©λ©λ‹ˆλ‹€.

 

 

(r-1)의 보수 연산은 μ•„λž˜μ˜ 식과 κ°™μŠ΅λ‹ˆλ‹€.

$$ N = (r^n - 1) - N$$

 

 

예λ₯Ό λ“€μ–΄ 9의 λ³΄μˆ˜μ™€ 1의 λ³΄μˆ˜λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. $$(10^n - 1) - N$$ $$(2^n - 1) - N$$

 

 

λ‹€μ–‘ν•œ 보수 연산듀이 μžˆμ§€λ§Œ Computer Scienceμ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 2의 보수λ₯Ό μ€‘μ μ μœΌλ‘œ 닀루도둝 ν•˜κ² μŠ΅λ‹ˆλ‹€.

 

 

 

 

 

Unsigned Number의 λΉΌκΈ° μ—°μ‚° (M - N)

λ§Œμ•½ Mκ³Ό N이 μžˆμ„λ•Œ M - N을 μ—°μ‚°ν•˜κΈ° μœ„ν•΄μ„œ μ•„λž˜μ˜ μˆœμ„œλ₯Ό λ”°λ¦…λ‹ˆλ‹€.

 

 

1. Mκ³Ό N의 r's complementλ₯Ό λ”ν•©λ‹ˆλ‹€. $$M + (r^n - N) = M - N + 2^n$$

2. λ§Œμ•½ (M ≥ N) 이면, carryκ°€ λ°œμƒν•˜λŠ”λ° 이것을 버리면 (M - N)을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

3. λ§Œμ•½ (M < N) 이면, carryκ°€ λ°œμƒν•˜μ§€ μ•ŠμœΌλ©° 값은 rⁿ - (N - M)이 λ©λ‹ˆλ‹€.

    이 값을 r's complementλ₯Ό μ·¨ν•˜κ³  음수(-) λΆ€ν˜Έλ₯Ό 뢙이면 μ›ν•˜λŠ” 값을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

μ•„λž˜ μ˜ˆμ‹œμ˜ 경우 10의 보수의 예둜 72532 - 13250의 경우 M ≥ N인 κ²½μš°μ΄λ―€λ‘œ 72532와 13250의 10의 보수인 86750을 λ”ν•©λ‹ˆλ‹€.

이후 carryκ°€ λ°œμƒν–ˆμœΌλ―€λ‘œ 이λ₯Ό 버리면 μ›ν•˜λŠ” 값인 59282κ°€ λ‚˜μ˜΅λ‹ˆλ‹€.

 

 

10의 보수의 λ‹€λ₯Έ 예둜 13250 - 72532λ₯Ό μ§„ν–‰ν•  λ–„λŠ” M < N인 κ²½μš°μ΄λ―€λ‘œ 13520κ³Ό 72532의 10의 보수인 27468을 λ”ν•©λ‹ˆλ‹€.

μ΄λ•Œ carryκ°€ μ—†μœΌλ―€λ‘œ 40718의 10의 보수인 59282에 음수(-)λΆ€ν˜Έλ₯Ό 뢙이면 μ›ν•˜λŠ” 값을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

2의 보수의 예둜 1010100 - 1000011 μ˜ 경우 M ≥ N인 κ²½μš°μ΄λ―€λ‘œ 1010100κ³Ό 1000011의 2의 보수인 0111101을 λ”ν•©λ‹ˆλ‹€.

이후 carryκ°€ λ°œμƒν–ˆμœΌλ―€λ‘œ 이λ₯Ό 버리면 μ›ν•˜λŠ” 값인 0010001이 λ‚˜μ˜΅λ‹ˆλ‹€.

 

 

2의 보수의 λ‹€λ₯Έ 예둜 1000011 - 1010100을 μ§„ν–‰ν•  λ–„λŠ” M < N인 κ²½μš°μ΄λ―€λ‘œ 1000011κ³Ό 1010100의 2의 보수인 0101100을 λ”ν•©λ‹ˆλ‹€.

μ΄λ•Œ carryκ°€ μ—†μœΌλ―€λ‘œ 1101111의 2의 보수인 0010001에 음수(-)λΆ€ν˜Έλ₯Ό 뢙이면 μ›ν•˜λŠ” 값을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

 

 

 

 

 

 

πŸ”Ž Fixed-Point Representation,  Floating-Point Representation

Fixed-Point의 경우 μ†Œμˆ˜μ μ˜ μœ„μΉ˜κ°€ κ³ μ •λ˜μ—ˆλ‹€λŠ” λœ»μž…λ‹ˆλ‹€.

ν•΄λ‹Ή λ°μ΄ν„°μ˜ ν˜•νƒœλ‘œλŠ” Integer 등이 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λ•Œ MSB(Most Significant Bit, μ΅œμƒμœ„ λΉ„νŠΈ)λ₯Ό λΆ€ν˜Έ λΉ„νŠΈλ‘œ μ‚¬μš©ν•©λ‹ˆλ‹€.

MSBκ°€ 0인 경우 μ–‘μˆ˜ 1인 경우 음수λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

 

 

예λ₯Ό λ“€μ–΄ -14λ₯Ό 2μ§„μˆ˜λ‘œ 8bit둜 λ‚˜νƒ€λ‚Ό λ•Œ 1 0001110이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ˜ν•œ λΆ€ν˜Έκ°€ μžˆλŠ” μ •μˆ˜μ˜ 계산은 두 κ°’μ˜ λΆ€ν˜Έκ°€ κ°™μœΌλ©΄ 두 값을 λ”ν•΄μ„œ κ·Έ λΆ€ν˜Έλ₯Ό μ·¨ν•˜λ©΄ λ©λ‹ˆλ‹€.

λ§Œμ•½ λΆ€ν˜Έκ°€ λ‹€λ₯΄λ‹€λ©΄ 큰 κ°’μ—μ„œ μž‘μ€ 값을 λΊ€ λ’€ 큰 κ°’μ˜ λΆ€ν˜Έλ₯Ό μ·¨ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

 

ν•˜μ§€λ§Œ 2의 보수 연산을 μ‚¬μš©ν•˜λ©΄ 비ꡐ와 λΊ„μ…ˆμ„ ν•˜μ§€ μ•Šκ³  단지 λΆ€ν˜ΈλΉ„νŠΈλ₯Ό ν¬ν•¨ν•˜μ—¬ μ—°μ‚°ν•˜λ©΄ λ©λ‹ˆλ‹€.

두 번째 방식이 컴퓨터가 μ—°μ‚°ν•˜λŠ” λ°©μ‹μœΌλ‘œ 맀우 κ°„λ‹¨ν•˜μ—¬ μ‚¬μš©λ©λ‹ˆλ‹€.

빼기의 경우 λΉΌλŠ” κ°’μ˜ 2의 보수 연산을 μ§„ν–‰ν•˜λ©΄ λ©λ‹ˆλ‹€.

 

 

즉 2의 보수의 경우 λ”ν•˜κΈ° 및 λΉΌκΈ°λŠ” λͺ¨λ‘ λ³΄μˆ˜μ—°μ‚°κ³Ό λ”ν•˜κΈ°λ§ŒμœΌλ‘œ μ²˜λ¦¬λ©λ‹ˆλ‹€.

λ”°λΌμ„œ λ™μΌν•œ hardware circuit으둜 λ§μ…ˆκ³Ό λΊ„μ…ˆμ„ μ²˜λ¦¬ν•  수 μžˆμ–΄ μžμ›μ„ μ ˆμ•½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

Overflow

n-bit μˆ«μžλ“€μ˜ λ§μ…ˆμ„ ν•œ κ²°κ³Ό 값이 n + 1 bitλ₯Ό ν•„μš”λ‘œ ν•  λ•Œ overflowκ°€ λ°œμƒν–ˆλ‹€κ³  ν•©λ‹ˆλ‹€.

이λ₯Ό ν™•μΈν•˜λŠ” 방법은 κ°€μž₯ μ™Όμͺ½ 2bitμ—μ„œ carry 값이 μ„œλ‘œ λ‹€λ₯΄λ©΄ overflowκ°€ λ°œμƒν•œ κ²ƒμž…λ‹ˆλ‹€.

 

 

예λ₯Ό λ“€μ–΄ 0100 κ³Ό 0101을 λ”ν–ˆμ„ λ•Œ 졜 쒌츑의 bitμ—μ„œλŠ” carryκ°€ μΌμ–΄λ‚˜μ§€ μ•Šμ•˜κ³  λ‘λ²ˆμ§Έ bitμ—μ„œλŠ” carryκ°€ μΌμ–΄λ‚¬μœΌλ―€λ‘œ overflowκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

 

 

0100κ³Ό 0101의 λΉΌκΈ° 연산을 μ§„ν–‰ν–ˆμ„ λ•Œ 졜쒌츑 bit와 λ‘λ²ˆμ§Έ bitλͺ¨λ‘ carryκ°€ μΌμ–΄λ‚˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ 연산을 μ§„ν–‰ν•©λ‹ˆλ‹€.

 

 

  01          00                   

  0100      0100

+0101    +1011

  1001      1111 → -0001 

 

 

 

Floating-Point Representation

Floating-Point의 경우 μ†Œμˆ˜μ μ˜ μœ„μΉ˜κ°€ 가변이며, λ ˆμ§€μŠ€ν„°μ— 이 정보λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€.

Floating-Point ν‘œν˜„μ—λŠ” 두fixed-point number와 λ™μΌν•˜κ²Œ ν‘œν˜„ν•˜λŠ” 것과 μ§€κΈˆ μ†Œκ°œν•  λ°©λ²•μž…λ‹ˆλ‹€.

 

 

$$m * r^e$$의 ν˜•νƒœλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

즉 μ•„λž˜μ˜ μ˜ˆμ™€ 같이 ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 

 

λ˜ν•œFloating-Point numberλŠ” MSBκ°€ 0이 μ•„닐 λ•Œ, normalizedλ˜μ—ˆλ‹€κ³  λ§ν•©λ‹ˆλ‹€.

 

 

 

 

 

 

 

 

 

 

 

 

πŸ”Ž Other Codes

Gray Code

Gray Codeλž€ μ—°μ†λœ 두 숫자 μ‚¬μ΄μ—λŠ” ν•˜λ‚˜μ˜ bit만 λ‹€λ₯΄κ²Œ ν• λ‹Ήν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

λ…Όλ¦¬νšŒλ‘œμ—μ„œ μΉ΄λ₯΄λ…Έλ§΅μ„ κ·Έλ¦¬λŠ” 것과 같은 μ›λ¦¬μž…λ‹ˆλ‹€.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

πŸ”Ž Error Detection Codes

데이터 전솑 μ‹œμ— μ—λŸ¬λ₯Ό νƒμ§€ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€.

parity bitλΌλŠ” 전체 1의 κ°œμˆ˜κ°€ ν™€μˆ˜ λ˜λŠ” μ§μˆ˜κ°€ λ˜λ„λ‘ ν•΄μ£ΌλŠ” bitλ₯Ό μΆ”κ°€ν•˜μ—¬ 였λ₯˜λ‘œ 인해 잘λͺ»λœ 값이 μ „λ‹¬λ˜λ©΄ λ‹€μ‹œ μ „μ†‘ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

 

 

parity bit의 탐지 과정을 νšŒλ‘œλ„λ‘œ ν‘œν˜„ν•˜λ©΄ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

 

 

 

 

이번 μž₯μ—μ„œλŠ” 2의 λ³΄μˆ˜μ— λŒ€ν•œ 계산을 μ—°μŠ΅ν•˜μ—¬ ν„°λ“ν•˜λŠ”κ²ƒμ΄ μ€‘μš”ν•©λ‹ˆλ‹€.