티스토리 뷰
부동소수점 표현(floating-point representation) : 소수점의 위치를 이동시킬 수 있는 표현 방법
부동소수점 수(floating-point number)의 일반적인 형태
N = (-1)S M × BE
단, S: 부호(sign), M: 가수(mantissa), B: 기수(base), E: 지수(exponent)
2진 부동소수점 수(binary floating-point number)
기수 B = 2
단일-정밀도(single-precision) 부동소수점 수 : 32 비트
복수-정밀도(double-precision) 부동소수점 수 : 64 비트
단일-정밀도 부동소수점 수 형식의 예
S: 1 비트, E: 8 비트, M: 23 비트
지수(E) 필드의 비트 수가 늘어나면, 표현 가능한 수의 범위 확장
가수(M) 필드의 비트 수가 늘어나면, 정밀도(precision) 증가
같은 수에 대한 부동소수점 표현
같은 수에 대한 부동소수점 표현이 여러 가지가 존재
0.1101 × 25
110.1 × 22
0.01101 × 26
정규화된 표현(normalized representation)
수에 대한 표현을 한 가지로 통일하기 위한 방법
± 0.1bbb...b × 2E
위의 예에서 정규화된 표현은 0.1101 × 25
비트 배열의 예 (0.1101 × 25)
부호(S) 비트 = 0
지수(E) = 00000101
가수(M) = 1101 0000 0000 0000 0000 000
소수점 아래 첫 번째 비트는 항상 1이므로, 저장할 필요가 없음 가수 23비트를 이용하여 소수점 아래 24 자리 수까지 표현 가능
바이어스된 지수 (biased exponent)
지수를 바이어스된 수(biased number)로 표현
사용 목적
0에 대한 표현에서 모든 비트들이 0이 되게 하여, 0-검사(zero-test)가 용이하게 하기 위함 0-검사가 정수에서와 같은 방법으로 가능
8-비트 바이어스된 지수값들
바이어스된 지수를 사용한 부동소수점 표현의 예
바이어스값 = 128일 때, N = - 13.625에 대한 부동소수점 표현
13.62510 = 1101.1012 = 0.1101101 × 24
부호(S) 비트 = 1 (-)
지수(E) = 00000100 + 10000000 = 10000100
(바이어스 128을 더한다)
가수(M) = 10110100000000000000000
(소수점 우측의 첫 번째 1은 제외)
부동소수점 수의 표현 범위
부동소수점 수의 표현 범위
0.5 × 2-128에서 (1 - 2-24) × 2127 사이의 양수들(대략 1.47 x 10-39 ~ 1.7 x 1038)
-(1 - 2-24) × 2127 에서 -0.5 × 2-128 사이의 음수들
제외되는 범위
(1 - 2-24) × 2127보다 작은 음수 음수 오버플로우(negative overflow)
0.5 × 2-128 보다 큰 음수 음수 언더플로우(negative underflow)
0
0.5 × 2-128 보다 작은 양수 양수 언더플로우(positive underflow)
(1 - 2-24) × 2127 보다 큰 양수 양수 오버플로우(positive overflow)
32-비트 데이터 형식의 표현 가능한 수의 범위
IEEE 754 표준 부동소수점 수의 형식
부동소수점 수의 표현 방식의 통일을 위하여 미국전기전자공학회(IEEE)에서 정의한 표준
표현 방법
N = (-1)S 2E-127 (1.M)
가수 : 부호화-크기 표현 사용
지수 필드 : 바이어스 127 사용
1.M × 2E의 형태를 가지며, 소수점 아래의 M 부분만 가수 필드에 저장(소수점 왼쪽의 표현되지 않는 1을 hidden bit라고 지칭)
64-비트 복수-정밀도 부동소수점 형식을 사용하는 경우
N = (-1)S 2E-1023 (1.M)
IEEE 754 표준 부동소수점 수의 형식
IEEE 754 표현 예 (N = - 13.625 )
13.62510 = 1101.1012 = 1.101101 × 23
부호(S) 비트 = 1 (-)
지수 E = 00000011 + 01111111 = 10000010
(바이어스 127을 더한다)
가수 M = 10110100000000000000000
(소수점 좌측의 1은 제외한다)
예외 경우를 포함한 IEEE 754 표준
예외 경우를 포함한 정의 (32-비트 형식)
만약 E = 255이고 M ≠ 0이면, N = NaN
만약 E = 255이고 M = 0이면, N = (-1)S ∞
만약 0 < E < 255 이면, N = (-1)S 2E-127 (1.M)
만약 E = 0이고 M ≠ 0이면, N = (-1)S 2-126 (0.M)
만약 E = 0이고 M = 0이면, N = (-1)S 0
예외 경우를 포함한 정의 (64-비트 형식)
만약 E = 2047이고 M ≠ 0이면, N = NaN
만약 E = 2047이고 M = 0이면, N = (-1)S ∞
만약 0 < E < 2047 이면, N = (-1)S 2E-1023 (1.M)
만약 E = 0이고 M ≠ 0이면, N = (-1)S 2-1022 (0.M)
만약 E = 0이고 M = 0이면, N = (-1)S 0
부동소수점 덧셈 / 뺄셈
덧셈과 뺄셈
지수들이 일치되도록 조정 (alignment)
가수들 간의 연산(더하기 혹은 빼기) 수행
결과를 정규화 (normalization)
부동소수점 산술의 파이프라이닝
단계 수만큼의 속도 향상
대규모의 부동소수점 계산을 처리하는 거의 모든 슈퍼컴퓨터들에서 채택
부동소수점 곱셈 / 나눗셈
2진수 부동소수점 곱셈 과정
가수들을 곱한다
지수들을 더한다
결과값을 정규화
2진수 부동소수점 나눗셈 과정
가수들을 나눈다
피젯수의 지수에서 젯수의 지수를 뺀다
결과값을 정규화
부동소수점 연산 과정에서 발생 가능한 문제들
지수 오버플로우(exponent overflow)
양의 지수값이 최대 지수값을 초과
수가 너무 커서 표현될 수 없는 상태이므로, +∞ 또는 -∞로 세트
지수 언더플로우(exponent underflow)
음의 지수값이 최대 지수값을 초과
수가 너무 작아서 표현될 수 없는 상태이므로, 0으로 세트
가수 언더플로우(mantissa underflow)
가수의 소수점 위치 조정 과정에서 비트들이 가수의 우측 편으로 넘치는 경우
반올림(rounding) 적용
가수 오버플로우(mantissa overflow)
같은 부호를 가진 두 가수들을 덧셈하였을 때 올림수가 발생하는 경우
재조정(realignment) 과정을 통하여 정규화
- Total
- Today
- Yesterday
- 컴퓨터사용자명변경
- 노트북화면밝기
- 티스토리챌린지
- 뉴스무료로보는사이트
- 뉴스무료사이트
- payco쿠팡
- pc사용자이름변경
- 쿠팡페이코
- 오블완
- 쿠팡페이코결제
- 윈도우가상키보드
- 2블럭
- 대전갑천2블럭
- 스포츠무료로보는사이트
- 야구무료로보는사이트
- pc화면밝기
- 드라마무료로보는사이트
- 원신흥
- 크목한
- 예능무료로보는사이트
- 윈도우화면밝기
- 예능무료사이트
- 갑천1블럭
- 페이코쿠팡결제
- 컴퓨터사용자이름변경
- 컴퓨터계정이름변경
- 대전스마트시티
- 페이코쿠팡
- 윈도우화상키보드
- 스포츠무료사이트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |