Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python NumPy finfo()로 부동 소수점 지수 부분의 비트 수 확인하는 방법

부동 소수점 표현에서 지수(exponent) 부분의 비트 수를 확인하려면 Python NumPy의 numpy.finfo() 메서드가 제공하는 iexp 속성을 사용하면 됩니다. 이 메서드의 첫 번째 매개변수는 float 값으로, 정보를 얻고자 하는 부동 소수점 데이터 타입을 의미합니다.

np.finfo()는 IEEE 754 규격에 따라 해당 부동 소수점 타입이 하드웨어에서 어떻게 표현되는지에 대한 세부 정보를 반환합니다. 주요 속성은 다음과 같습니다.

  • iexp : 지수(exponent) 부분에 할당된 비트 수
  • min : 해당 dtype이 표현할 수 있는 최솟값
  • max : 해당 dtype이 표현할 수 있는 최댓값

단계별 진행 방법

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np

1. float16 타입 확인하기iexp는 지수 부분의 비트 수를, minmax는 각각 해당 dtype의 최솟값과 최댓값을 나타냅니다.

a = np.finfo(np.float16(45.9))
print("float16 타입의 지수 부분 비트 수...\n", a.iexp)
print("float16 타입의 최솟값...\n", a.min)
print("float16 타입의 최댓값...\n", a.max)

2. float32 타입 확인하기

b = np.finfo(np.float32(22.3))
print("\nfloat32 타입의 지수 부분 비트 수...\n", b.iexp)
print("float32 타입의 최솟값...\n", b.min)
print("float32 타입의 최댓값...\n", b.max)

3. float64 타입 확인하기

c = np.finfo(np.float64(29.2))
print("\nfloat64 타입의 지수 부분 비트 수...\n", c.iexp)
print("float64 타입의 최솟값...\n", c.min)
print("float64 타입의 최댓값...\n", c.max)

전체 예제 코드

import numpy as np

# 부동 소수점 표현에서 지수 부분의 비트 수를 얻으려면
# numpy.finfo() 메서드의 iexp 속성을 사용합니다.
# 첫 번째 매개변수는 정보를 얻고자 하는 float 데이터 타입입니다.

# float16 타입 확인
a = np.finfo(np.float16(45.9))
print("float16 타입의 지수 부분 비트 수...\n", a.iexp)
print("float16 타입의 최솟값...\n", a.min)
print("float16 타입의 최댓값...\n", a.max)

# float32 타입 확인
b = np.finfo(np.float32(22.3))
print("\nfloat32 타입의 지수 부분 비트 수...\n", b.iexp)
print("float32 타입의 최솟값...\n", b.min)
print("float32 타입의 최댓값...\n", b.max)

# float64 타입 확인
c = np.finfo(np.float64(29.2))
print("\nfloat64 타입의 지수 부분 비트 수...\n", c.iexp)
print("float64 타입의 최솟값...\n", c.min)
print("float64 타입의 최댓값...\n", c.max)

실행 결과

float16 타입의 지수 부분 비트 수...
5
float16 타입의 최솟값...
-65500.0
float16 타입의 최댓값...
65500.0

float32 타입의 지수 부분 비트 수...
8
float32 타입의 최솟값...
-3.4028235e+38
float32 타입의 최댓값...
3.4028235e+38

float64 타입의 지수 부분 비트 수...
11
float64 타입의 최솟값...
-1.7976931348623157e+308
float64 타입의 최댓값...
1.7976931348623157e+308

정리

실행 결과를 통해 각 부동 소수점 타입의 지수 부분 비트 수를 확인할 수 있습니다.

데이터 타입지수 부분 비트 수 (iexp)표현 범위
float16 (반정밀도)5비트약 ±65,500
float32 (단정밀도)8비트약 ±3.4 × 10³⁸
float64 (배정밀도)11비트약 ±1.8 × 10³⁰⁸

이처럼 np.finfo()iexp, min, max 속성을 활용하면 NumPy 부동 소수점 타입의 내부 구조와 표현 가능한 값의 범위를 손쉽게 파악할 수 있습니다.