2014-09-26 3 views
0

16 비트 부호없는 정수 (부호없는 short) 값은 모두 32 비트 부동 소수점 값에 정확히 저장할 수 있습니까? 모든 32 비트 부호없는 정수 (부호없는 int) 값을 32 비트 부동 소수점 값에 정확히 저장할 수 있습니까? 아래의 숫자 중 32 비트 부동 소수점 값을 정확하게 나타낼 수있는 것은? 사이 -2 24 2 24 1.648, 2.75, 2.125, 10.999, 9.351, 0.62532 비트 부동 소수점 값에 관한 질문

+2

수업에서 다루지 않았습니까? –

답변

1
  • 모든 정수 단 정밀도 수레로 표현 될 수있다.
  • -2 -1 또는 2 +1은 수레로 나타낼 수 없습니다.

결과적으로 모든 부호없는 16 비트 정수는 부동 소수점으로 정확하게 표현할 수 있지만 부호없는 32 비트 정수는 모두 표현할 수 없습니다.

일부 비트 패턴은 0.125 및 1.5와 같은 분수를 나타 내기 위해 사용되므로 정수에 2 비트 패턴을 사용할 수 없습니다.

프로그래밍 언어로 간단한 프로그램을 사용하면 1.648, 2.75, 2.125, 10.999, 9.351, 0.625 중 어느 것이 단 정밀도로 정확하게 나타낼 수 있는지를 알 수 있습니다 : 인쇄, 26 자리 10 진수 (예 : 당신은 대부분의 프로그래밍 언어에서 프로그램의 1.648f 부동 소수점 상수를 입력하면 1.648fprintf -like 기능을 사용 %.25e), 값은 ...

, 그것은 1,000분의 1,648에 단 정밀도 부동 소수점 가까운 변환됩니다 . 이 숫자가 1.64800000으로 인쇄되면 숫자 1.648이 정확히 float로 나타낼 수 있음을 의미합니다. 다른 것으로 인쇄되면 1.648은 표현할 수 없습니다 (그리고 출력은 가장 가까운 실수가 얼마나 먼지 알려줍니다).

+0

그래서 3 번째 질문은 32 비트 부동 소수점 값으로 2.125 만 정확하게 나타낼 수 있다는 뜻입니까? –

+1

@JamesGrabowski 당신이 그것을 발견 한 것이 놀랍습니다. 충분한 숫자로 다른 숫자의 각 값을 인쇄 할 때 프로그래밍 언어에는 무엇이 표시됩니까? 단 정밀도 부동 소수점 숫자를 나타 내기 위해'f' 접미사 또는 프로그래밍 언어의 동등한 표기법을 잊지 마십시오! –

+0

모든 값들의 수레를 만들어서 출력하면 모두 효과가있는 것처럼 보입니다. –

관련 문제