본문 바로가기
Study/프로그래밍

Float 의 유효자릿수

by 김카비 2019. 12. 31.

float의 유효 자리수에 대해 이해하기 위해서는 우선 소수점을 2진수로 바꾸는 법을 알아야 한다

 

15.625 를 예로 들어보면
15 -> 1111

 

여기까지는 쉽다

 

이후 소수점은 곱하기 2를 해서 1의 자리수를 bit로(지수) 표현하면 된다

0.625 -> 1.25 -> .1
0.25 -> 0.5 ->.10
0.5 -> 1.0 -> 0.101

 

즉 15.625를 2진수로 나타내면 1111.101이 된다

0.625를 2진수로 나타낸다면 0.101이 된다

 

https://whatisthenext.tistory.com/146

 

단정도(single precision), 배정도(double precision)이란?

부동소수점 개요 처음 C언어를 공부할 때 가장 어리둥절했던 부분이 이 부분인 듯 하다. 처음에는 왜 이걸 배우지? 라는 생각을 했지만 컴퓨터구조론에서 컴퓨터가 실수를 다루는 방식에 대해서 학습하면서 흥미롭..

whatisthenext.tistory.com

이 포스팅을 참고해서 C에서 float을 어떻게 표현하는지 공부를 하고왔으면

 

 

 

https://www.h-schmidt.net/FloatConverter/IEEE754.html

 

IEEE-754 Floating Point Converter

IEEE-754 Floating Point Converter Translations: de This page allows you to convert between the decimal representation of numbers (like "1.02") and the binary format used by all modern CPUs (IEEE 754 floating point). Update There has been an update in the w

www.h-schmidt.net

여기서 실습을 해보면 쉽게 이해가 더 쉽다

exponent의 뒤 7bit와 mantissa의 마지막 비트를 체크해보면

mantissa가 1.0000001192...로 표시가 되는 것을 볼 수 있다.

(exponent를 127로 했다는 것은 bit shift가 없었다는 뜻이고

bit shift가 없었다는 것은 1의 자리 이상은 신경쓰지 않겠다는 의미

original 숫자 == mantissa, 부동소수점에서 exponent는 bias일 뿐 유효값은 mantissa이다)

 

이제 체크를 해지하고 두번째 끝 비트를 체크해보면 소수점 이하가 2배가 된다!

C에서 소수점 이하는 mantissa의 최소값의 배수의 형태로 표현이 되며

그말은 즉!

소수점 이후 유효숫자는 1192가 시작되는 바로 앞 지점인 6자리 수 라고 할 수 있다.

 

 

댓글