IEEE 754 부동소수점 변환기(계산기)
* 음수 표현은 분모나 분자 둘 중 하나를 음수로 쓰시면 됩니다.
도움말
사용법
-
범위를 먼저 설정합니다. [single (32bit|단정밀도|단정도) / double (64bit|배정밀도|단정도) / 직접설정]
-
탭을 선택 후 변환할 값을 입력합니다.
-
본문에는 2진법으로 부동소수점을 표현하는데
만약 16진법(HEX)등 변환이 필요하다면 진법변환 계산기를 이용해보세요.
부동소수점 설명
부동소수점 표현은 컴퓨터에서 수를 저장하는 방법 중 하나입니다.
± (부호)는 맨 처음 0과 1로 표시하고, 1.xxxxx (가수) 와 2n (지수)의 곱으로 수를 표현하는 방법으로 이해하면 됩니다.
= 부동소수점에는 위 정보(부호 ±, 지수 n, 가수 xxxxx)가 있고, 다시 10진수로 바꿀때엔 0과 1로 이뤄진 부동소수점 수 에서 위 정보를 통해 알아낸 식을 계산하면 됩니다.
부동소수점 | 부호 | 지수 | 가수 | Bias |
---|---|---|---|---|
32bit | 1bit | 8bit | 23bit | 127 |
64bit | 1bit | 11bit | 52bit | 1023 |
약속된 규칙이므로 계산하기 위해서는 미리 알아야하는 내용이 있습니다.
어디까지가 {부호, 지수, 가수}인지 알아야하고, Bias값을 알아야 계산이 가능합니다. (범위를 쉽게 외우는 방법은 아래 설명을 읽어보세요.)
Bias 값은 어떻게 정해지나요?
32bit 기준으로 설명을 해보자면, 지수값의 비트는 8개(숫자 범위는 0 ~ 255, 256개)로 약속되어있습니다.
Bias는 숫자 범위의 절반부터 시작해야 지수의 음수(-)범위에서 0을 포함하여 양수(+)범위까지 모두 포함시킬 수 있는데
절반은 01111111(2) = 127로, Bias(기준)는 127이 됩니다. (모두 0과 모두 1은 약속되어 있어 254개 중 절반입니다.)
Bias(기준)보다 작아진 만큼 음(-)의 지수값, 커진만큼 양(+)의 지수값을 표현하게 됩니다.
결국 지수범위만 외우면 부호는 1bit로 고정, 가수부분은 나머지가 되므로 쉽게 알 수 있고,
Bias는 지수부분의 절반! 앞자리만 0임을 알 수 있습니다.
64bit에서는 지수부가 11bit 이므로 11개중 앞자리만 0으로 쓰면 01111111111(2) = 1023 이 되는것을 알 수 있습니다.
(2048개중 약속된 2개를 제외한 2046의 절반 1023)
64bit의 지수범위 11bit만 외웠는데 Bias 기본값 "1023" 과 "맨 앞 1bit는 부호 / 11bit는 지수 / 나머지 52bit가 가수" 임을 알 수 있습니다.
* bias값은 경우에 따라 다르게 쓸 수 있고 그런 경우에는 별도로 지정한 bias값을 안내합니다.
또 다른 약속
Infinity (무한대)
- 부호: 양수는 0, 음수는 1
- 지수: 모두 1
- 가수: 모두 0
NaN (Not a Number: 숫자가 아니거나, 잘못됨.)
- 지수: 모두 1
- 가수: 0이 아닌수가 한개라도 있으면
Zero (0)
- 부호: 양수는 0, 음수는 1
- 지수: 모두 0
- 가수: 모두 0
범위 초과시 "반올림"
IEEE754 표기시 가수(소수점 아래부분) 표기가능 범위(예: 32bit에서는 23)를 초과하는 경우 반올림합니다.
10진수에서 5이상을 반올림 하듯, 2진수에서는 1이상을 반올림하면 됩니다.
0.1을 32bit 부동소수점으로 변환과정에서 가수값을 보면 반올림의 의미가 이해되실겁니다.
가수값: 10011001100110011001100
11001... 에서가수값: 10011001100110011001101 반올림된 값
0.1을 2진수로 바꾸면 소수점 아래부분은 1001이 반복되는데, 단정밀도(32bit)의 가수범위는 23자리까지 표현 가능하므로, 소수점 아래 24번째 자리에서 반올림하여 표현합니다.
일반적인 Bias(기준값)에서 앞자리만 0의 증명
모두 0과 모두 1은 약속되어 있어 숫자 범위중 2개를 빼야합니다.
총 개수 2지수bit수에서 약속 값 2개를 뺀 뒤 2로 나누면 절반
(2지수bit수 - 2)/2 = 2지수bit수 - 1 - 1
n자리 2진수 표현은 다음과 같으므로 (2n-1 … 21 20)
2지수bit수 - 1 - 1 = '앞자리만 1, 나머지 0인 수' - 1 = '앞자리만 0, 나머지 1인 수'
숫자로 표현하면 (1000 … 000) - 1 = (0111 … 111) 이므로 기본 Bias에서 앞자리만 0 임을 알 수 있다.
이 툴이 생긴 이유
어려운 내용이 아닌데 너무 어렵게 설명하고, 어렵게 가르치는것 같아서 이 툴을 만들고, 간단히 이해할 수 있는 설명을 넣었습니다.
오류제보 / 기능제안 안내사항
본문에 내용이 잘못되었거나, 설명등에 개선이 필요한 경우 아래 '오류제보/기능제안'에 글을 작성해주세요.
예시: {어디}가 {어떻게} 개선되면 좋을것 같아요
오류제보 / 기능제안 글 작성하러가기