이게 소수점 포함해서 10진수 에서 2진수로바꾸는건대..
여기서 바로 종료되는거 수정하고..
소수점 포함 2진수에서 10진수까지 변환되게 하고싶은대.
수정좀 도와주세요 (굽신굽신)
#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");
}
댓글 0