CS 🦾

부동 소수점

침착하고 가야할 곳에만 집중하는 달팽이 2026. 2. 5. 18:30

* warning : 이건 공부한 CS 지식을 내 말로 정리하고 기억하기 위해 작성하는 것으로, 틀린 표현이 있을 수 있습니다 -> 피드백 적극 환영

이런 느낌으로 기록을 남기려고 한다... 출처: p__guri

 


부동 소수점

 

정의 : 2진 실수 데이터 저장 할 때 맘대로 정수 부분을 길게 표현 하거나 소수 부분을 길게 표현할 수 있게 하는 표현법 (고정 소수점으로 하면 너무 오차 값이 크잖슴.. ) 

 

IEEE 754 표준 부동소수점이라는 표준이 있는데 그거 어떻게 하는지 배울거임. 

 

1. IEEE 754 표준 부동소수점 표현 방식

-13.625 라는 숫자를 EEE 754 표준 부동소수점 표현 방식으로 바꿔보자. 

우선 32bit 를 기준으로 할지 64bit를 기준으로 할지 골라야 한다. 

골랐으면 이제 3개의 공간에 값을 쪼개서 넣으면 된다. 근데 그 쪼개는 방법 겁나 번거로움. 

 

출처: https://mzguide.com/entry/부동-소수점이란-무엇인가

1. 부호 : 부호 는 1bit 차지하고 +면 0 /-면 1을 넣으면 된다. 

우리의 예시는 -니까 1 넣으면 된다. 

 

2. 지수부:

(지수부에 그냥 정수 부분 넣으면 편하겠건만.. 좀 절차를 거쳐서 넣어야 한다. )

일단 13.625 를 2진수로 변환부터 해야 한다. 

13 -> 1101
0.625 -> 101

 

그럼 1101.101

이 나온다. 

이걸 1.XXX * 2ⁿ 이런 형식으로 바꿔줘야 한다. 

-1101.101 -> -1.101101 * 2³

 

이제 드디어 지수 부분에 뭘 넣냐면 

127에 2의 지수를 더하면 된다. 

그럼 여기서는 127 + 3 이니까 130을 2진수로 또 변환해서.. 

=> 10000010 을 지수부에 적어주면 된다. 

(만약 1000 -> 이런 숫자처럼 8비트를 가득 채우지 않는 수가 나오면 앞에 0을 붙여서 00001000 이렇게 써주면 된다. ) 

 < 근데 왜 127인가? >
왜냐면 8비트 안에 지수를 적어야 하는데 (아 32비트단정도 형식이라는 가정하에) 
음수 양수 다 표현을 해야 하잖슴... 그래서 0 ~ 255 까지 표현이 되니까 반은 음수 반은 양수로 쓰려고 중간 값인 127을 더하는거

 

 

3. 가수부

여기에는 아까 구한 1.XXX 처럼 생긴 애의 XXX 부분을 적어주면 된다. 그리고 남은 비트는 다 0으로 채워주면 된다. 

=> 우리의 경우에는 101101 이다. 

 

그럼 완성! 

1 10000010 10110100000000000000000

 

이러면 이제 -13.625 라는 숫자를 EEE 754 표준 부동소수점 표현 방식으로 바꾸기 완성!

 

 

+ 부동소수점 수의 산술 연산 절차도 알고 있으면 좋은데 시간 없어서 이만 줄임...