엔지니어가 되고 싶은 공돌이
04. 2진수 부동소수점수의 표현(Representation of Floating Point Number) 본문
04. 2진수 부동소수점수의 표현(Representation of Floating Point Number)
Geca 2024. 7. 24. 23:49
4. 1. 2진수 연산과 보수(Binary Number Operations and Complement)
- Addition of Binary Number는 10진수처럼 더해주면 됩니다. 다만, Binary Number에서 1 + 1 처럼 자리올림(Carry)이 발생하면 윗자리에 1을 더해야 합니다.
- 컴퓨터에서는 숫자 데이터를 부호화-절댓값(Sign Magnitude), 1의 보수(1’s complement), 2의 보수(2’s complement)로 표현합니다. 지금 널리 사용되는 방법은 2의 보수(2’s complement)입니다.
- 부호화-절댓값(Sign Magnitude) : MSB(Most Significant Bit)에 0일 때는 Positive Number, 1 일 때는 Negative Number 로 표현하고, 그 뒤의 Bit에 2진수로 숫자를 저장합니다.
다만 이 방법은 컴퓨터에서 연산할 때 연산의 결과가 정확하지 않고, 0을 표현하는 방법이 2가지라서 사용하지 않습니다.
- 1’s complement : 2진수에서 0은 1로, 1은 0으로 바꾸는 방법.
ex) 1100 -> 0011.
연산의 결과가 정확하지만, 여전히 0을 표현하는 방법이 2가지라서 사용하지 않습니다.
- 2’s complement : 2진수에서 0은 1로, 1은 0으로 바꾸고 나서 1을 더하는 방법.
ex) 1100 -> 0100.
- 컴퓨터에서는 뺄셈연산과 음수표현을 위해 보수를 사용하며, 실제로 하드웨어에 보수회로는 있지만 뺄셈회로는 없습니다.
- 부호확장(Sign Extension): 숫자를 저장하는 비트수를 늘릴 때, 부호를 고려하여 늘려주는 방법.
1) Sign Magnitude: 부호만 MSB로 옮기고, 나머지는 모두 0으로 채웁니다.
2) 1’s complement: 늘어난 길이만큼 부호와 같은 값으로 모두 채웁니다.
3) 2’s complement: 늘어난 길이만큼 부호와 같은 값으로 모두 채웁니다.
- 2’s complement로 표현된 수를 Decimal Number로 바꿀 때는 2’s complement에 다시 2’s complement를 적용시켜서 양수로 바꾸고 자릿수에 맞는 2의 지수를 곱해 Decimal Number로 바꾸고 -을 붙입니다.
- Binary Decimal Operations에서 top carry 2개가 00 or 11 이면 정상적으로 계산된 것이고, 01 or 10 이면 overflow가 발생한 것입니다.
4. 2. 2진수 부동소수점수의 표현(Representation of Floating Point Number)
- Floating Point Number는 부호(Sign), 지수(Exponent), 가수(Mantissa) 3개의 구역으로 나뉩니다. Sign은 수가 양수인지 음수인지, Exponent는 2의 지수를, Mantissa는 소수 이하 부분을 표현합니다.
- IEEE 754.
- 단일정밀도(Single Precision): 32bit(sign 1bit, exponent 8bit, mantissa 23bit), bias: 127.
- 2배정밀도(Double Precision): 64bit(sign 1bit, exponent 11bit, mantissa 52bit), bias: 1023.
- 계산된 exponent에 bias를 더해서 저장합니다. bias를 더하는 이유는 exponent가 양수이든 음수이든 항상 양수 값으로 저장하기 위해서입니다.
- 값을 저장하기전 1.01011 X 25 처럼 수를 정규화 한 뒤 값을 저장합니다.
위 수는 single precision일 때, sign에 0을, exponent에 132를, mantissa에 01011000… 을 저장합니다.
2진수를 정규화하면 항상 1.xxx 형태가 되므로 mantissa에 1. 은 생략하여 저장합니다.
- underflow 발생 시 0으로 표현하고, 0은 exponent와 mantissa를 모두 0으로 표시합니다. 부호비트는 +0, -0이든 비교연산에서는 같은 것으로 생각합니다.
- ∞을 표현할때는, exponent는 모두 1, mantissa는 모두 0이며 부호비트로 +∞, -∞을 구별합니다.
- NaN(Not a Number)는 실제로 표현하지 못하는 수로, exponent는 모두 1, mantissa는 모두 0이 아닌 경우입니다.
'Electric > Digital Logic Circuit' 카테고리의 다른 글
06. 디지털 코드 - 2(Digital Code - 2) (3) | 2024.07.24 |
---|---|
05. 디지털 코드 - 1(Digital Code - 1) (3) | 2024.07.24 |
03. 수의 체계(Number System) (0) | 2024.07.24 |
02. 디지털 집적회로(Digital Integrated Circuit) (0) | 2024.07.24 |
01. 디지털과 아날로그(Digital and Analog) (0) | 2024.07.24 |