티스토리 뷰
#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 | 
- 안내
- 궁금한 점을 댓글로 남겨주시면 답변해 드립니다.