티스토리 뷰
#include <stdio.h>
#include <stdlib.h>
#define ARRAY_SIZE 8
int main()
{
double fnum;
char *apcNumber[ARRAY_SIZE];
int iIndex=0;
int count=0;
int bin[64]={0};
int i,j=1,sum=0,toggle=1;
int dResult=0, dTemp=1;
unsigned long xsum[2]={0,0};
while(1)
{
printf("IEEE754 64bit(double type) Test...\n");
printf("input value : ");
scanf("%lf",&fnum);
for(iIndex=0; iIndex<ARRAY_SIZE; iIndex++)
{
apcNumber[iIndex] = ((char *)(&fnum))+(ARRAY_SIZE-iIndex)-1;
}
for(iIndex=0; iIndex<ARRAY_SIZE; iIndex++)
{
for(i=1; i<=8; i++)
{
if( (*(apcNumber[iIndex]) & (0x01 << (8 - i))) != 0)
{
bin[count] = 1;
count++;
}
else
{
bin[count] = 0;
count++;
}
}
}
printf("\n");
printf("DEC : %lf\n",fnum);
for(count=0;count<64;count++)
{
xsum[count/32]*=2;
xsum[count/32]+=(bin[count]);
}
printf("HEX : %x%x \n",xsum[0],xsum[1]);
printf("BIN : S EEEEEEEEEEE
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
MMMMMMMMMMMMMM\n");
printf(" ");
for(count=0;count<64;count++)
{
if(count==1 || count==12)
printf(" ");
printf("%d",bin[count]);
}
printf("\n");
printf("Sign : %d\n",bin[0]);
while(bin[j]==1 || bin[j]==0)
{
if(j==12)break;
dResult*=2;
dResult+=(bin[j]-0);
j++;
}
printf("Exponent : %d\n",dResult);
}
return 0;
}
'기억하자정보 > 기타' 카테고리의 다른 글
[관리방어] 11.패스워드 설정 문제 (0) | 2006.10.10 |
---|---|
윈도우 API 예제 (0) | 2006.10.02 |
R6002 - floating point not loaded (0) | 2006.09.25 |
자료형과 2에 대한 보수(2's complement) (0) | 2006.09.25 |
IEEE 754 - 부동소수점 표기법 (0) | 2006.09.25 |
- 안내
- 궁금한 점을 댓글로 남겨주시면 답변해 드립니다.