IT/프로젝트 및 실습 컴퓨터 프로그래밍 설계 과제#3_HW03 리드론 2017. 10. 20. 12:56 #include <stdio.h> #include <stdlib.h> #include <float.h> int main(void) { float f_num = 0.0f; int arr[4]; int binary_arr[32] = {0,}; //배열을 0으로 초기화한다. int test_num = 0; unsigned char *ucp; int iCnt; int i=0; int j=0; while(1) { for(i=0 ; i<32; i++){ binary_arr[i]=0; } printf("Enter a float-type real number (0 for exit) : "); scanf("%f", &f_num); fflush(stdin); //버퍼 비우기 ucp = (unsigned char *)&f_num; //little endian방식으로 저장되있으므로 자리를 바꿔준다. for(iCnt=0; iCnt<4; iCnt++){ arr[4 -(iCnt+1)] = *(ucp + iCnt); //printf("%02X ", *(ucp + iCnt)); } /* printf("\n"); for(iCnt=0; iCnt<4; iCnt++){ printf("%02X ", arr[iCnt]); } printf("\n"); for(iCnt=0; iCnt<4; iCnt++){ printf("%d ", arr[iCnt]); } printf("\n"); */ //32bit 형태의 float 데이터를 배열에 초기화 for(j=0 ; j<4 ; j++){ test_num = arr[j]; for(i=0;i<8;i++){ binary_arr[(8*j)+7-i] = test_num % 2; test_num = test_num/2; } } //** Binary representation = 0011 1101 1100 1100 1100 1100 1100 1101 printf("** Binary representation = "); for(i=0;i<32;i++){ if(i%4 == 0){ if(i!=0){ printf(" "); } } printf("%d", binary_arr[i]); } printf("\n"); // Sign = 0 printf(" Sign = "); printf("%d\n", binary_arr[0]); // Exponent = 0111 1011 printf(" Exponent = "); for(i=0;i<8;i++){ if(i%4 == 0){ if(i!=0){ printf(" "); } } printf("%d", binary_arr[i+1]); } printf("\n"); // Mantissa = 1001 1001 1001 1001 1001 101 printf(" Mantissa = "); for(i=0;i<23;i++){ if(i%4 == 0){ if(i!=0){ printf(" "); } } printf("%d", binary_arr[i+9]); } printf("\n"); if(f_num == 0.0) { //입력된 값이 0이면 //MAX of float number 출력후 종료한다. f_num = FLT_MAX; printf("MAX of float number = %f\n", f_num); ucp = (unsigned char *)&f_num; //little endian방식으로 저장되있으므로 자리를 바꿔준다. for(iCnt=0; iCnt<4; iCnt++){ arr[4 -(iCnt+1)] = *(ucp + iCnt); //printf("%02X ", *(ucp + iCnt)); } //32bit 형태의 float 데이터를 배열에 초기화 for(j=0 ; j<4 ; j++){ test_num = arr[j]; for(i=0;i<8;i++){ binary_arr[(8*j)+7-i] = test_num % 2; test_num = test_num/2; } } //** Binary representation = 0011 1101 1100 1100 1100 1100 1100 1101 printf("** Binary representation = "); for(i=0;i<32;i++){ if(i%4 == 0){ if(i!=0){ printf(" "); } } printf("%d", binary_arr[i]); } printf("\n"); // Sign = 0 printf(" Sign = "); printf("%d\n", binary_arr[0]); // Exponent = 0111 1011 printf(" Exponent = "); for(i=0;i<8;i++){ if(i%4 == 0){ if(i!=0){ printf(" "); } } printf("%d", binary_arr[i+1]); } printf("\n"); // Mantissa = 1001 1001 1001 1001 1001 101 printf(" Mantissa = "); for(i=0;i<23;i++){ if(i%4 == 0){ if(i!=0){ printf(" "); } } printf("%d", binary_arr[i+9]); } printf("\n"); break; } } printf("Bye!!!\n"); system("PAUSE > NUL"); //콘솔창이 바로 종료되는것을 방지되기 위한 return 0; }