컴퓨터 산술

단정밀도 부동소수점수에서 1억(10⁸)에 1을 더해도 결과가 1억 그대로입니다. 이 현상의 설명으로 올바른 것은 무엇입니까?

  1. A1억은 단정밀도로 나타낼 수 없으므로 결과가 NaN이 되어 있다
  2. B유효 자릿수가 약 7자리밖에 없어 1이 반올림으로 사라지기 때문
  3. C덧셈 명령이 큰 수의 계산을 생략하도록 정해져 있다
정답과 해설 보기

정답: B. 유효 자릿수가 약 7자리밖에 없어 1이 반올림으로 사라지기 때문

단정밀도는 유효숫자가 약 7자리이며, 1억 부근에서는 표현 가능한 수의 간격이 8입니다. 1억 + 1은 표현 가능한 두 값 사이에 들어가므로 가장 가까운 1억으로 반올림되어 1이 사라집니다. 이처럼 크기가 다른 수를 더하면 작은 쪽의 정보가 사라지는 현상을 정보 누락(정보 손실)이라 합니다. 작은 값을 대량으로 더할 때는 작은 것부터 먼저 더하거나 보정이 있는 덧셈을 사용하는 등의 방법을 씁니다. 1억은 표현 가능한 수이며 NaN이 되지 않습니다.

이 분야 연습하기 분야로 돌아가기

컴퓨터 산술의 다른 문제

  1. 대량의 부동소수점수를 합산할 때 사용되는 카한 합산(보정 합산)의 목적으로 올바른 것은 무엇입니까?
  2. FMA(융합 곱셈-덧셈) 명령으로 a × b + c를 계산하는 이점으로 올바른 것은 무엇입니까?
  3. bfloat16이 AI 학습에서 사용되는 주된 이유는 무엇입니까?
  4. FP16(반정밀도: 부호 1·지수부 5·가수 10비트)으로 신경망을 학습시킬 때 문제가 되기 쉬우며, 손실 값을 몇 배로 확대하여 계산하는 방법(로스 스케일링)으로 대처하는 것은 무엇입니까?
  5. FP16(부호 1·지수부 5비트(바이어스 15)·가수 10비트)으로 나타낼 수 있는 최대 유한값은 얼마입니까?