关于C++编程
十进制与二进制进行转换时,我只能进行整数之间的转换,而小数就不会了。有哪位高手能帮我实现这一编程。比如十进制的10.5转换为二进制。如何编写程序?用C++,不是java,vb等
十进制与二进制进行转换时,我只能进行整数之间的转换,而小数就不会了。有哪位高手能帮我实现这一编程。比如十进制的10.5转换为二进制。如何编写程序?用C++,不是java,vb等
答案:#include <iostream>
using namespace std;
int main()
{
double a, b;
char bin[10];
int bit = 0;
cin >> a;
b = a - (int)a;//截取小数部分。。
while (bit < 6)//精确到6位。。
{
b = b * 2;//不断乘2。。
if (b >= 1)
{
b = b - 1.0;
bin[bit] = '1';//如果大于1,截取前面的1作为一位小数。。
}
else
{
bin[bit] = '0';//输入小于1,那就是0了。。
}
bit++;
}
bin[bit] = '\0';
cout << "小数部分转化为二进制,表示为:0." << bin << endl;
system("pause");
return (0);
}
运行结果如下:
程序已经注释了,如果有不明白的可以联系我。。二进制不能表示小数吧我只能告诉你方法了,C++我没学好,就算懂都不记得了
方法是整数部分÷2取余数,直到商为1为止,然后按商到余数的顺序写下来就可以了,
小数部分×2取整
用C语言的说法就是这样的:
float s
int a,j,b[10];
j=0;
while(s=0 || j<10 )
{
a=int(s*2);
s=s*2-a;
b[j]=a;
j++;
}
j是控制大部分小数都是永远都乘不完的,你可以自己定义要多少位小数的
然后在把数组b[j]倒着来就OK了