10进制转换成2进制
从屏幕输入10进制,程序需要输出对应的二进制数据。
例如:
输入: 12.25
输出:1010.01
C语言实现如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <float.h>
int main(int argc, const char * argv[])
{
float number = 0.0;
int ipart = 0;
float mpart = 0.0;
int i = 0;
int j = 0;
char str[64] = {0};
scanf("%f", &number);
/* sign */
char sign = '+';
if (number < 0.0) {
sign = '-';
number = -number;
}
ipart = (int)number;
mpart = number - ipart;
/* integer partion */
for (i=0; i<(64-1); i++) {
if (ipart > 0){
str[i] = (ipart % 2) + '0';
ipart = ipart / 2;
} else {
break;
}
}
/* reverse */
for (j=0; j<(i-1)/2; j++) {
char tmp = str[j];
str[j] = str[i-j-1];
str[i-j-1] = tmp;
}
/* integer partion is zero */
if (i==0) {
str[i] = '0';
i++;
}
/* magnitude portion */
if (mpart >= FLT_MIN) {
str[i] = '.';
i++;
for (; i<(64-1); i++) {
if (mpart > FLT_MIN) {
mpart = mpart * 2;
str[i] = (int)mpart + '0';
mpart = mpart - ((int)mpart);
}
}
}
/* insert sign flag */
if (sign == '-') {
for (; i>0; i--) {
str[i] = str[i-1];
}
str[0] = sign;
}
printf("%s\n", str);
return 0;
}