질문은 제목에 있습니다. 64 비트 시스템의 경우를 예로 들어 보겠습니다.누군가 부동 소수점 1.002 * 10^3이 컴퓨터에서 어떻게 나타나는지 알려줍니다.
는 내가 기계 표현
1.002 * 10^3 - 1.000 * 10 ^3
의 결과를 알고 싶습니다 때문에 부동 번호가 표시되는 방법을 알고 싶어요. 당신의 아이디어에 감사드립니다.
질문은 제목에 있습니다. 64 비트 시스템의 경우를 예로 들어 보겠습니다.누군가 부동 소수점 1.002 * 10^3이 컴퓨터에서 어떻게 나타나는지 알려줍니다.
는 내가 기계 표현
1.002 * 10^3 - 1.000 * 10 ^3
의 결과를 알고 싶습니다 때문에 부동 번호가 표시되는 방법을 알고 싶어요. 당신의 아이디어에 감사드립니다.
메모리에 float
값을 표시하려는 경우 작은 C 프로그램을 작성하여 대답을 표시 할 수 있습니다. 예를 들어, 귀하의 질문에 지정된 값을 촬영 :
float f = (float)(1.002*1000-1.000*1000);
char* p = (char*)&f;
int i;
// Little Endian
for (i=0; i<sizeof(f); i++)
printf("%.2X",p[i]);
// Big Endian
for (i=sizeof(f)-1; i>=0; i--)
printf("%.2X",p[i]);
가
"%.2X"
문자열
CHAR_BIT
는
8
와 같은 것을 가진 기자이며, 일반적으로
N
는
CHAR_BIT/4
와 같은 인 상태
"%.NX"
로 설정해야 함을 유의하시기 바랍니다.
위 작업의 결과는 2입니다. 2의 'float'표현을 찾으십니까? –
결과는 '2'입니다. ~ 7 (float) 또는 ~ 16 (double) 십진수의 정밀도가있는 정수로 정확하게 표현할 수 있습니다. – Jeff
[반 정밀도 부동 소수점 형식] (http://en.wikipedia.org/wiki/Half-precision_floating-point_format)에도이 숫자가 정확하게 표현되는 것으로 보입니다. 하지만 당신은 64 비트 기계라고 말하기 때문에 이중 정밀도를 고려합니까? –