求用C++将十进转换为二制的源程

来源:百度知道 编辑:UC知道 时间:2024/06/01 07:57:32
包括带小数的

楼主说的是转换成二进制的字符串么?

#include <iostream>
#include <string>
#include <float.h>

using namespace std;

int main()
{
double a = 13.0625;

int b = int(a);
double c = a-b;
string s = ".";

while(b)
{
if(b & 0x00000001)s = "1" + s;
else s = "0" + s;
b = b >> 1;
}

while(c > FLT_EPSILON)
{
c = (c * 2);
if(c >= 1)s = s + "1";
else s = s + "0";
c = c - int(c);
}

cout << s;

return 0;
}

浮点精度不大好控制对于不是1/2的整数次幂的小数
输出的二进制结果只能说是非常接近输入。。
像0.5,0.25,0.125之类的数效果会比较好

根本不需要转换!

一看带小数,心都凉了,哇凉哇凉的。

在计算机内部不就是以二进制存储的么?还需要什么转换呢。如果你要研究怎么样自己将十进制的数据转换到二进制位的形式,这个就太复杂了,而且也