부동소수점 double, flaot에 대하여

윤정민·2023년 11월 21일
0

C++

목록 보기
46/46

1. 부동소수점이란

부동소수점이란 실수를 표현할 때 소수점의 위치를 고정하지 않는것이다.

[고정소수점]
123.456을 고정 소수점으로 표현한다면 123456을 나눠서 표현해야 하기 때문에 정수 부분과 소수 부분을 분할해 배치해야 한다. 이로인해 나타낼 수 있는 범위가 한정적이게 된다.


[2진법과 부동소수점]
-9.6875를 2진법으로 나타내기 위해서 부호, 정수, 소수로 나눠보자.

  • 부호: 음수
  • 정수: 9 -> 1001(2)
  • 소수: 6875 -> 1011(2)
    • 2진수로 변환하는 과정에서 무한 순환이 일어나기도 함(이로인한 오차발생)
  • 결론: -1001.1011(2)

[정규화]

  • 정규화: 정수부를 1로 맞추고 적절하게 소수점 위치를 조정하는 것
    -1001.1011(2) → -1.0011011×2³

  • 부호부: 음수

  • 지수부: 3

  • 가수부: 0011011

2. float와 double

  • float: [ 부호부 1Bit | 지수부 8bit | 가수부 23Bit ]

  • double: [ 부호부 1Bit | 지수부 11bit | 가수부 52Bit ]

double은 float에 비해 실수부를 표현하는 크기가 커져 상대 오차가 작아짐

profile
그냥 하자

0개의 댓글