2014-05-22 6 views
0

질문은 제목에 있습니다. 64 비트 시스템의 경우를 예로 들어 보겠습니다.누군가 부동 소수점 1.002 * 10^3이 컴퓨터에서 어떻게 나타나는지 알려줍니다.

는 내가 기계 표현

1.002 * 10^3 - 1.000 * 10 ^3 

의 결과를 알고 싶습니다 때문에 부동 번호가 표시되는 방법을 알고 싶어요. 당신의 아이디어에 감사드립니다.

+1

위 작업의 결과는 2입니다. 2의 'float'표현을 찾으십니까? –

+1

결과는 '2'입니다. ~ 7 (float) 또는 ~ 16 (double) 십진수의 정밀도가있는 정수로 정확하게 표현할 수 있습니다. – Jeff

+0

[반 정밀도 부동 소수점 형식] (http://en.wikipedia.org/wiki/Half-precision_floating-point_format)에도이 숫자가 정확하게 표현되는 것으로 보입니다. 하지만 당신은 64 비트 기계라고 말하기 때문에 이중 정밀도를 고려합니까? –

답변

2

메모리에 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_BIT8와 같은 것을 가진 기자이며, 일반적으로 NCHAR_BIT/4와 같은 인 상태 "%.NX"로 설정해야 함을 유의하시기 바랍니다.

+1

'% a' 형식 지정자는 약간 더 읽기 쉬운 표현을 제공합니다. – tmyklebu

+0

@tmyklebu : 팁 주셔서 감사합니다. (저는이 특정 지정자에 대해 잘 모르기 때문에). –

+0

연산이 반드시 2 일 필요는 없으므로이 대답은 잘못되었습니다. 1.002 * 10^3은 비트 단위로 정확하게 표현 될 수 없습니다. 앞의 Pascal Cuoq의 주석을 참조하십시오. 따라서 나는 투표하지만이 대답을 받아들이지 않습니다. 어쨌든 고마워. – zell