#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목[re]부동소수점 float 질문2021-09-16 10:41
작성자

안녕하세요. 조교 김성규입니다


컴퓨터의 메모리에 데이터를 저장하기 위해서는 최종적으로 0과 1로만 이루어진 이진법으로 저장이 되어야합니다.

따라서 부동소수점 역시 일상생활에서는 십진법의 형태로 나타낼 수 있지만

그것을 컴퓨터에 저장하기 위해서는 이진법의 형태로 만들어주어야 합니다.


Float point example frac.svg


이 그림은 32비트 크기의 float이 메모리에 저장되는 방식을 나타낸 그림입니다.

최상위 비트부터 부호(양수or음수), 지수, 가수 순으로 저장됩니다.

예를들어 사진의 -118.625를 저장하는 과정은 다음과 같습니다.

  • 음수이므로, 부호부는 1이 된다.
  • 그 다음, 절댓값을 이진법으로 나타내면 1110110.101이 된다. (이진기수법을 참조)
  • 소수점을 왼쪽으로 이동시켜, 왼쪽에는 1만 남게 만든다. 예를 들면 1110110.101=1.110110101×2⁶ 과 같다. 이것을 정규화된 부동소수점 수라고 한다.
  • 가수부는 소수점의 오른쪽 부분으로, 부족한 비트 수 부분만큼 0으로 채워 23비트로 만든다. 결과는 11011010100000000000000이 된다.
  • 지수는 6이므로, Bias를 더해야 한다. 32비트 IEEE 754 형식에서는 Bias는 127이므로 6+127 = 133이 된다. 이진법으로 변환하면 10000101이 된다.
댓글
이전부동소수점 float 질문2021-09-15
다음step 4 코딩 질문 드립니다2021-09-15