// fpn_binary.c : ½Ç¼ö(ºÎµ¿ ¼Ò¼öÁ¡:Floating Point Number)¿¡ ´ëÇÑ Áø¹ýº¯È¯ // ¾Õ¿¡¼ Á¦½ÃÇÑ ¾Ë°í¸®ÁòÀº ÀϹÝÀûÀÎ Á¤¼ö¿¡ ´ëÇÑ Áø¹ýº¯È¯Àε¥ ¹ÝÇÏ¿©, // ¾Æ·¡¿¡ ÀÖ´Â ¾Ë°í¸®ÁòÀº ½Ç¼ö(ºÎµ¿¼Ò¼öÁ¡)¿¡ ´ëÇÑ Áø¹ýº¯È¯ ¾Ë°í¸®ÁòÀÔ´Ï´Ù. // 2Áø¹ý¿¡ ´ëÇØ¼¸¸ »ý°¢ÇØ ºÃ¾î¿ä. Âü°í·Î 8, 16Áø¹ý º¯È¯µµ ¾Æ·¡¿Í À¯»çÇÑ Çü½ÄÀ¸·Î // Ç¥ÇöµÉ ¼ö ÀÖÀ» °ÍÀ¸·Î »ý°¢µË´Ï´Ù. ¾Æ·¡ÀÇ ¾Ë°í¸®Áò¿¡ ´ëÇØ¼ °£´ÜÈ÷ ¾ð±ÞÇϸé // Á¤¼öÀÎ °æ¿ì¿¡´Â Á¾ÀüÀÇ ¹æ½ÄÀ» ±×´ë·Î µû¸£°í, ½Ç¼ö(ºÎµ¿ ¼Ò¼öÁ¡)ÀÎ °æ¿ì Á¤¼öºÎºÐ°ú // ½Ç¼öºÎºÐÀ¸·Î ³ª´©¾î °è»êÀ» Çß½À´Ï´Ù. ºÎµ¿ ¼Ò¼öÁ¡¿¡ ´ëÇÑ Áø¹ýº¯È¯ ¹æ½ÄÀÇ Æ¯¼º¶§¹®¿¡ // ³ª´©¾î¼ »ý°¢À» Çß¾î¿ä. ±¸Ã¼ÀûÀ¸·Î Áø¹ýº¯È¯ ¹æ½Ä¿¡ ´ëÇØ¼ ¼³¸íÇÏÁö´Â ¾Ê°Ú½À´Ï´Ù. #include <stdio.h> #define N 30 void main() { float num; int num1; float num2; char *p, num_arr1[N+1] = {0}; int num_arr2[N+1]; int i, r, cnt; printf("¼ö¸¦ ÀÔ·ÂÇϼ¼¿ä : "); scanf("%f", &num); printf("2Áø¹ýÀ¸·Î º¯È¯ : "); if( num < 0) { printf("-"); num = -1 * num; } if( num == (int)num) { num1 = (int)num; num2 = 0; for( i = 0; num1 != 0; i++) { r = num1 % 2; num_arr1[N-1-i] = r + '0'; num1 = num1 / 2; } p = num_arr1+N-i; printf("%s", p); } else { num1 = (int)num; num2 = num - num1; for( i = 0; num1 != 0; i++) { r = num1 % 2; num_arr1[N-1-i] = r + '0'; num1 = num1 / 2; } p = num_arr1+N-i; // ¼Ò¼öºÎºÐ¿¡ ´ëÇÑ Áø¹ýº¯È¯ cnt = 0; do { num2 = num2 * 2; num_arr2[cnt] = (int)num2 % 2; cnt++; } while(num2 != (int)num2); printf("%s.", p); for( i = 0; i < cnt; i++) { printf("%d", num_arr2[i]); } } printf("\n"); } |