一个C++问题,关于十进数转换成二进数 然后输出二进制位码

来源:百度知道 编辑:UC知道 时间:2024/06/24 01:47:09
问题如下:
1:
程输出long double型数12345.67891023456的二进制位码。
只要给出原理就好 谢谢
2:有3000个二进制数,最长64位。在文件中以数字串的形式存放,没行一个数 没行只放一个数 如果是-1,那就表示输入结束
而且每一个二进制数对应一个十进制数输出 每个输出都要换行
给出原理就好 不过老大您给出程序 我感激不尽(加100分)

//XP + VC2005调试通过
//PS: 楼主的C++编译环境必须支持c99标准,TC环境//下不保证能运行通过
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>

//十进制转换二进制
void FunctionOne( long double n )
{
using namespace std;

long double dTmp = n;
if ( n < 0 )
{
n=-n;
}
long num = floor( n );
double part = n - num;
double t;
string strResult;

while( num > 0 )
{
if ( num % 2 == 1 )
{

strResult.insert(0, "1");
}
else
{
strResult.insert(0, "0");
}
num/=2;
}

strResult+='.';

double base=0.5;

while ( part != 0 && part > 0.0000000001)
{
if ( part >= base )
{
strResult+='1';
part-=base;
}
else
{
strResult+='0';
}
bas