디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

부동소수점 IEEE 754-1985 Exponent Bias

평범메이드갤로그로 이동합니다. 2019.07.01 13:24:07
조회 3994 추천 38 댓글 7
														


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73cee8efa11d02831b169fb2255dcc071d46250c582fa8271d805185d8c4f9834e9ef09430aa4a242c3afd338782cb20815a753fc2bfa046be1b4

열혈강의 C 책만으로는 부동소수점 이해가 잘 안되고


댓글에 답변도 없고 해서 직접 찾아봤는데 굉장히 흥미로움.







컴퓨터에서는 모든 값을 이진수로 표현하는데,


이진수로 모든 실수값을 표현하기엔 한계가 있음


따라서 일반적으로 부동소수점 방식이라는 것을 사용함. 소수점이 부동(不動)이 아닌 둥둥 떠다닌다는 부동(浮動)이라는 뜻


부동소수점 방식은 IEEE 754-1985 표준을 채택하고 있는데, 아래 그림과 같이 표현함 (single-precision IEEE 754-1985 기준)



viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73cee8efa11d02831b169fb2255dcc071d46250c582fa8271d805185d8c4f9834e9ef09430aa4a242c3afd338782ce60a41f20daa2ef2046bc878

대충 간략히만 살펴보면


1. sign은 부호 비트로 0이면 양수, 1이면 음수


2. exponent(지수부)는 8비트로 소수점의 위치를 표현함. 맨 앞의 1비트는 부호 비트이고 나머지 7자리로 표현함. 후에 설명


3. fraction(가수부)는 23비트로 유효숫자를 표현함



이에 대해 구체적으로 써보자면

viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73cee8efa11d02831b169fb2255dcc071d46250c582fa8271d805185d8c4f9834e9ef09430aa4a242c3afd338782ce50f45f25dac20fa046b675c


1. 부동 소수점 방식은 지수부(exponent)유효숫자를 나타내는 가수부(fraction)나뉨.


예를 들어 38.25라는 실수가 있다고 하면


38은 이진수로 100110, 0.25는 이진수로 0.01임


따라서 38.25는 이진수로 100110.01 이라고 할 수 있음


이를 정규화 시키면 1.0011001 x 2^5 가 됨.


(정규화는 소수점 위의 유효숫자에서 한 자리만을 남기도록 하는 과정임


우리가 123.45라는 숫자를 1.2345 x 10^2라고 표현하는 것처럼,


이것도 이진수라는거 말고는 차이가 없음)


따라서 지수는 e=5, 유효숫자는 10011001가 되는데 실제로 컴퓨터에서 표현되는 방식은 약간 다름. 2번으로 이어서 얘기함



2. 위 수식에서 p는 point representation, 즉 가수부의 최대 비트수를 말하는데 single-precision (32bit) floating-point의 경우 p=24임.


single-precision (32bi) floating-point 에서는 23개의 비트수로 가수부를 표현함


이 말은 즉 가수부의 비어있는 자리는 전부 0으로 채운다는 말이 됨


따라서 정확하게는 지수는 e=5, 유효숫자는 10011001000000000000000가 됨.




다만 여기서 끝이 아니라 더 생각해봐야 할게 있음


지수부가 8비트이므로 총 256가지를 표현할 수 있지만


값이 커지는 경우(예:1234567891011.1)와 값이 작아지는 경우(예:0.12345678910111213) 둘다 표현할 수 있어야 함


따라서 8비트에서 맨 앞 1비트를 부호 비트로 하고, 나머지 7자리로 자릿수를 표현하기로 타협함.





지수부의 모든 비트가 1일 때(11111111)는 무한대 값을 표현하도록 예약되어 있음


즉 8비트 중에서 실제로 사용할 수 있는 범위는 1~254로 총 254개


이를 양수/음수로 반반씩 나눠서 쓰기 위해 127을 빼서 -126부터 127까지의 범위를 사용할 수 있도록 함


따라서 저장할 때는 해당 지수에 127을 더하면 됨. (이 127을 Bias라고 부름)


이를 위 38.25 예시에 적용하면


지수가 e=5, 유효숫자는 10011001000000000000000 였으므로


지수 5에 127을 더하면 127+5=132 가 되고 132 = 10000100 이므로


실제로 비트로 표현되는 지수부는 10000100 임.


38.25는 양수이므로 부호비트:0, 지수부:10000100, 가수부:10011001000000000000000


따라서 38.25는 0 10000100 10011001000000000000000 로 표현할 수 있음





그런데 정규화를 하면 유효숫자의 최상위 비트는 무조건 1이 되므로, 효율성을 위해


이를 생략해서 23비트로 2^24 범위의 유효숫자를 표현할 수 있도록 함


최종적으로 38.25를 단일 부동소수점 방식으로 표현하면

0 10000100 00110010000000000000000



viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73cee8efa11d02831b169fb2255dcc071d46250c582fa8271d805185d8c4f9834e9ef09430aa4a242c3afd338782cb10c13f759a92aa4046b7fc5

위 표는 표현할 수 있는 정밀도 범위. Double precision도 방식은 동일함


일반적으로 float은 Single precision, double은 Double precision




만약 지수부에서 이 범위를 벗어나게 된다면


IEEE 754-1985 표준에 따라 다음과 같이 표현하기로 약속함


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73cee8efa11d02831b169fb2255dcc071d46250c582fa8271d805185d8c4f9834e9ef09075af2ca457dcc81bcf7d61af7e426d8866a0d261a497e4bd23b3c

표현할 수 있는 범위를 넘는 큰 수는 infinity 라고 하고,


표현할 수 있는 범위보다 작은 수는 정규화 할 수 없어서 denormalized number 혹은 subnormal number라고 함


정규화 가능한 수normalized number라고 함



위 표를 요약하자면 다음과 같음


지수부 : 0 유효숫자: 0 => 0

지수부 : 0 유효숫자: non zero => denormalized number

지수부 : 255 유효숫자: 0 => infinity

지수부 : 255 유효숫자: non zero => NaN(Not a Number)

그 이외의 경우 => normalized number




또한 다음은 위키피디아 Exponent bias 항목에 나온 설명임


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73cee8efa11d02831b169fb2255dcc071d46250c582fa8271d805185d8c4f9834e9ef09075af2ca457dcc81bcf7d61af7e42688d33a5b7946971de1004624


single-precision에서 Bias 상수가 127였듯이


double-precision에서는 Bias 상수가 1023임


quad-precision에서는 Bias 상수가 16383





viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73cee8efa11d02831b169fb2255dcc071d46250c582fa8271d805185d8c4f9834e9ef09430aa4a242c3afd338782ce10a40f55caf20f0046ba5c4

번외로 위 사진은 64bi IEEE-754 float 형식이라고 함.





참고한 자료는 위키피디아의 Floating-point arithmetic, IEEE 745-1985, Exponent bias 항목


특히 IEEE 745-1985 항목은 한번쯤은 읽어봐도 좋을것 같음




추천 비추천

38

고정닉 9

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 현역으로 군대 안 간게 의아한 스타는? 운영자 25/06/30 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
공지 프로그래밍 갤러리 이용 안내 [88] 운영자 20.09.28 45206 65
2870046 애드센스 또 거부 당했네 ㅠㅠ 루비갤로그로 이동합니다. 02:17 4 0
2870045 빌보드 핫100 노래 모두 이 노래보다는 사실 얌전한 내용이다 발명도둑잡기(118.216) 02:16 6 0
2870044 Jpa는 쓰면쓸수록 병신같노 프갤러(118.235) 02:16 5 0
2870042 요즘 아이들의 '친일 혐중', 오늘도 원인을 찾는 중입니다 발명도둑잡기(118.216) 02:12 2 0
2870041 피부 건조한 사람들 꼭봐!!! ㅇㅇㅇㅇ(115.144) 02:12 3 0
2870039 강남 같은 동네 주민들의 닭싸움 케이지 발명도둑잡기(118.216) 01:55 6 0
2870037 우디 거스리 발명도둑잡기(118.216) 01:47 6 0
2870035 RPA취업 프갤러(1.243) 01:43 6 0
2870034 공부하기 좋은 세상이다 [1] 초코냥갤로그로 이동합니다. 01:40 15 0
2870033 오늘한일 [2] PyTorch갤로그로 이동합니다. 01:39 23 0
2870032 이 땅은 너희의 땅 [1] 발명도둑잡기(118.216) 01:29 12 0
2870031 똥양인들은 머리에 번식,동족포식 생각밖에없음?? 뒷통수한방(1.213) 01:29 9 0
2870030 썡노가다 하다보니 IAT 찾았다 [1] 루도그담당(58.239) 01:22 15 0
2870028 What The Fuck Is A Kilometer 발명도둑잡기(118.216) 01:13 8 0
2870027 [로터리] 토지공개념은 '소설'이 아니다. 발명도둑잡기(118.216) 01:06 8 0
2870026 재활용 할가요 도리스아(112.170) 01:01 10 0
2870025 오늘의 소설, 영화 실마리: 거대 닭이 인간에게 복수 발명도둑잡기(118.216) 00:54 7 0
2870024 요즘 자라나는 새싹들 마인드 ) 크게 통수한방치고 해외로 튀기 뒷통수한방(1.213) 00:52 12 0
2870022 NFT는 저작권 보호 도구인가 저작권 침해 도구인가 [1] 발명도둑잡기(118.216) 00:39 13 0
2870021 트위터 창업자 “모든 지재권 법 없애자” 주장 논란…머스크도 맞장구 발명도둑잡기(118.216) 00:38 12 0
2870020 "GPU는 사면서, 데이터는 왜 훔쳐" 빅테크의 질주, 뒤에서 발명도둑잡기(118.216) 00:33 11 0
2870019 어셈블리어 발명도둑잡기(118.216) 00:22 16 0
2870017 내일까지 이거 끝내고 블로그 글 적고 [1] ㅆㅇㅆ(124.216) 00:15 14 1
2870016 가끔 뜻밖에 행운이 찾아올 때 있지 않음?????????????? ㅇㅅㅇ(117.111) 00:15 19 0
2870015 이 기사 보는 즉시 비번 바꿔라…구글·애플 160억개 개인정보 유출 발명도둑잡기(118.216) 00:09 12 0
2870014 뭐냐 졸다가 점점 세진다. 강도가... 넥도리아(112.170) 00:07 12 0
2870013 C井と書いて [3] 슈퍼막코더(110.133) 00:06 22 0
2870012 고향가면 구축 2억이면 사는데 ㅇㅇ(118.235) 00:01 18 0
2870011 진앙지가 우리집일까 집 군포로 뜨는데 안양시 동안구인데, 넥도리아(112.170) 00:00 12 0
2870009 정크푸드 케이라면 [1] 발명도둑잡기(118.216) 07.05 14 0
2870008 뭐지? 지진? 우리집인가? 40년된 주택 넥도리아(112.170) 07.05 15 0
2870007 피부 건조한 사람들 꼭봐!!! [2] ㅇㅇㅇㅇ(121.126) 07.05 18 0
2870006 고춧가루 ㅇㅇ(117.111) 07.05 15 0
2870004 스마트팜 아두이노로는 턱도 없어서 PLC 해야함 [3] ㅆㅇㅆ(124.216) 07.05 49 0
2870003 나 귀농하려고 스마트팜 아두이노 만들고 있음 [2] 프갤러(14.5) 07.05 36 0
2870002 내얼굴 ㅁㅌㅊ냐 [1] ㅇㅇ(222.108) 07.05 43 0
2870001 다음달에 DPP 먼지 보고싶어요 [4] PyTorch갤로그로 이동합니다. 07.05 36 0
2870000 GPT로 궁합분석하는 웹사이트를 만들었는데 같이 돈벌어볼 사람있나..? 프갤러(218.152) 07.05 20 0
2869999 윤건영, ‘외환죄’ 정조준.. “‘기밀’ 운운하는 자 내란공범” [1] 발명도둑잡기(118.216) 07.05 22 0
2869998 유니티 라이프 사이클은 템플릿 매서드랑 관련해서 설명했음 [1] ㅆㅇㅆ(124.216) 07.05 39 0
2869997 뉴스1의 ‘삼부토건, 유튜브 운영자 고소’ 보도 이상한 이유 [1] 발명도둑잡기(118.216) 07.05 14 0
2869996 나님 목소리 최초 공개❤+ [3/1] ♥냥덩이♥갤로그로 이동합니다. 07.05 34 0
2869995 시간당 13000원에 주 2회 학생 2명 하루 2시간 가르치거든 [2] ㅆㅇㅆ(124.216) 07.05 33 0
2869994 학생한테 zenject를 쓰라고 해야하긴하는데 내 자신이 zenject [2] ㅆㅇㅆ(124.216) 07.05 31 0
2869992 납골공원에 장기두는 할배들이 없구나 [6] 헬마스터갤로그로 이동합니다. 07.05 40 0
2869991 일 존나 빡세게 하니까 벌써 10시고 [2] ㅆㅇㅆ(124.216) 07.05 31 0
2869990 오늘 과외하는 학생에게 가르친것 정리 중 [11] ㅆㅇㅆ(124.216) 07.05 66 0
2869989 원래 병신들이 많은 직업군이냐? [4] ㅇㅇ(218.232) 07.05 42 0
2869988 와근데 이세돌인가 그거하는 애들 해킹 빡고수네 [4] ㅆㅇㅆ(124.216) 07.05 61 0
뉴스 윤민수X이예준, 17일 듀엣곡 ‘결혼하지 못하는 이유’ 발매! 디시트렌드 07.04
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2