도구스개발

FP16·BFloat16 비트 변환기

숫자가 FP16(반정밀도)과 BFloat16으로 각각 어떻게 저장되는지 부호·지수·가수 비트로 분해합니다. 두 형식의 표현 범위·정밀도 차이를 비교합니다.

딥러닝 가중치처럼 크기가 다양한 값을 넣어 보세요

실제로 저장되는 값 · 정규수

1.234375

입력한 값과 다릅니다 — 16비트로 줄이며 반올림됐습니다

비트 표현 (16비트)

0011110011110000
부호 1비트지수 5비트가수 10비트

분해

부호0 (양수)
지수2^0(비트값 15 − 바이어스 15)
16진수0x3CF0
입력값과의 차이-1.8500e-4

거꾸로 — 비트 패턴에서 값 찾기

현재 형식(FP16) 기준으로 해석합니다

복원된 값1
BFloat16은 지수 비트 수(8비트)가 32비트 단정도와 같아 표현 범위는 fp32와 같고 정밀도만 줄어듭니다. FP16은 지수 비트가 5개뿐이라 범위는 훨씬 좁지만(최대 약 65504) 그 범위 안에서는 가수 비트(10비트)가 더 많아 정밀합니다. 32비트에서 16비트로 줄일 때는 최근접 짝수 반올림을 씁니다.

사용 방법

  1. 1분해할 숫자를 넣습니다.
  2. 2FP16(반정밀도)과 BFloat16 중 형식을 고릅니다.
  3. 3부호·지수·가수 비트와 실제로 저장되는 값을 확인합니다.
  4. 416진수·2진수 비트 패턴을 직접 입력해 값을 거꾸로 복원할 수도 있습니다.

자주 묻는 질문

둘 다 16비트지만 지수·가수 비트 배분이 다릅니다. FP16(IEEE 754 반정밀도)은 부호 1+지수 5+가수 10비트이고, BFloat16은 부호 1+지수 8+가수 7비트입니다. BFloat16은 지수 비트 수가 32비트 단정도(fp32)와 똑같아서 표현 범위(가장 크고 작은 값)는 fp32와 같고 정밀도(유효자리)만 줄어듭니다. FP16은 지수 비트가 적어 범위가 훨씬 좁은 대신 그 범위 안에서는 더 정밀합니다.

BFloat16은 딥러닝 학습에서 널리 쓰입니다. 표현 범위가 fp32와 같아 그레이디언트가 너무 크거나 작아져 오버플로·언더플로가 나는 문제를 피하기 쉽기 때문입니다. FP16은 정밀도가 더 필요하지만 값의 범위가 좁아도 되는 추론(inference)이나 그래픽 파이프라인에서 많이 씁니다.

그 도구는 단정도(32비트)·배정도(64비트)만 다룹니다. 이 계산기는 딥러닝에서 주로 쓰는 16비트 형식(FP16·BFloat16) 두 가지를 다룹니다. 같은 원리(부호·지수·가수 분해)를 더 작은 비트폭에 적용한 것입니다.

32비트로 표현한 값을 16비트로 줄일 때 최근접 짝수 반올림(round to nearest, ties to even)을 씁니다. 단순히 잘라내는(절삭) 것이 아니라 가장 가까운 표현 가능값으로 반올림하며, 정확히 중간이면 짝수 쪽으로 반올림해 오차가 한쪽으로 쏠리지 않게 합니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • FP16=부호1+지수5(바이어스15)+가수10, BFloat16=부호1+지수8(바이어스127)+가수7이라는 비트 배분과 "BFloat16은 fp32 상위 16비트를 반올림해 자른 것"이라는 관계를 dzone.com·johndcook.com 두 곳을 WebSearch로 교차 확인했습니다(2026-09-05).
  • 반올림은 최근접 짝수(round to nearest, ties to even)를 씁니다 — 단순 절삭이 아닙니다. 이 반올림 모드가 fp32→fp16, fp32→bf16 변환의 표준임을 여러 참조 구현(x448/float16 등)으로 교차 확인했습니다.
  • 자바스크립트 자체에는 16비트 부동소수점 타입이 없어, 32비트(DataView)를 거쳐 비트 단위로 직접 변환합니다. 알려진 경계값(최대 정규수 65504, 최소 정규수·비정규수, 무한대·NaN)으로 왕복 검산했습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 5일 · 결과는 참고용 추정치입니다.