고정소수점수/ 부동소수점수

si_yeon·2021년 12월 28일
0

float이란 floating point number의 준말로, 부동소수점수라고도 한다.
이는 고정소수점수와 같이 이해하면 좋은데, 모두 소수를 표현하는 방식이라고 보면 된다.

소수점 이진수로 변환하는 법은

https://woo-dev.tistory.com/93 이 링크를 참조하면 좋다.

고정 소수점이란??

  • 고정소수점에서는 정수를 표현하는 비트 수와 소수를 표현하는 비트 수를 미리 정해두고, 그 비트만큼의 이진수로 표현한다.

부동 소수점이란??

  • 부동 소수점에서는 소수점의 위치를 고정하지 않고, 그 위치를 나타내는 수를 따로 적어 유효숫자를 나타내는 가수와, 소수점의 위치를 나타내는 지수로 나누어 표현한다.

  • IEEE 754는 부동소수점을 표현하는 가장 널리 쓰이는 표준이다.

    페이지를 참고하면 더 자세히 알 수 있다

ex) 1.0을 고정소수점 수와 부동소수점 수로 표현해보자

  • 고정소수점수=> 1bit(부호) + 16bit(정수) + 15bit(소수)
  • 부동소수점수=> 1bit(부호) + 8bit(지수) + 23bit(가수)

우선 고정소수점의 경우,

  1. 부호는 양수이기 때문에 0

  2. 정수부분의 경우, 1을 이진수로 바꾸면 1이지만, 16bit만큼의 공간을 채우기 위해 0000000000000001 이 된다.

  3. 소수부분의 경우, 0이 되고 이는 마찬가지로 15bit만큼의 공간이 할당되어 있어 0으로 채우면,

따라서 0 0000000000000001 000000000000000 가 1.0의 고정소수점수가 된다.

정리하면, 고정소수점수는 단순히 이진수로 바꿔주면 된다


부동소수점의 경우,

  1. 마찬가지로 부호는 양수이기 때문에 0

  2. 지수부분의 경우, 바이어스 상수와 소수점을 옮긴 지수만큼의 수를 더해 이를 이진수로 바꿔준다.
    (즉, 1.0에서는 더 이상 소수점을 옮길 필요가 없기 때문에
    bias 상수(2^(8bit-1)-1)인 127과 2^0의 지수인 0을 더해준 127을 이진수로 바꾼 값(1111111)이 된다.)

    따라서 01111111
    bias상수 더보기

  3. 가수부분은 소수점 이하의 0부분을 이진수로 바꿔주면 되는데, 이 경우 0은 0이기 때문에 23bit를 0으로 채워주면

따라서 0 01111111 00000000000000000000000 이 1.0의 부동소수점수가 된다.

정리하면, 부동소수점수는 소수를 (1)이진수로 바꿔준 후, (2)소수점을 이동시켜 위의 과정을 거치면 된다.

0개의 댓글

관련 채용 정보