[완료]소수 표현에 관해 질문..

viva의 이미지

안녕하세요
소수 표현이 잘 안되서 이렇게 질문드립니다 ㅠㅠ

int형에 0x3F800000이 저장되어 있습니다.
이것을 IEEE754 부동소수점 규약에 맞추어 float형으로 출력하려고 하는데..

아무리 해도 원하는 값 0.007812는 안나오고, 1612279808.000000가 출력됩니다...ㅠㅠ

어떻게 해야지 0.007812로 출력할수 있을까요...?
float형으로 변수를 할당해서 0x3F800000을 넣어도 1612279808.000000가 출력되더라구요...ㅠㅠ

익명 사용자의 이미지

리틀/빅 엔디안 문제 아닌가요?

익명 사용자의 이미지

http://www.h-schmidt.net/FloatApplet/IEEE754.html

해 보시면 아시겠지만, 일단 0x3F800000 => 1.0 이랍니다. 0.7812 => 0x3BFFFBCE 구요.
그리고 엔디안 문제, double/float 문제 등등 ...

#include <stdio.h>
 
int main()
{
        float d;
        unsigned char *c = (unsigned char*) &d;
 
        *(c) = 0xce;
        *(c+1) = 0xfb;
        *(c+2) = 0xff;
        *(c+3) = 0x3b;
 
        printf("%x %x %x %x\n", *c, *(c+1), *(c+2), *(c+3));
        printf("%f\n", d);
 
        return 0;
}

익명 사용자의 이미지

에구... 0.7812 아니고 0.007812지요. ;-))

viva의 이미지

아 그렇군요~~ 답변 감사드립니다~~