C++如何将一个双精度的数转化成一个二进制数

yu_chao 2010-12-12 03:55:01
如题
...全文
254 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingbigeast 2010-12-15
  • 打赏
  • 举报
回复

//编程输出12345.67891023456的二进制形式
//运行结果:11000000111001.10101101110011010000111110100110010110101101101
//加小数点一共是62位。


#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
// ofstream fout("G:\\binary.txt");
int a=12345;
long double b=0.67891023456;
vector<char> r;
while(a)
{
if(a%2)r.push_back('1');
else r.push_back('0');
a/=2;
}//处理整数部分,每次除2,记录余数
reverse(r.begin(),r.end());//整数部分要反转
r.push_back('.');//小数点
int step=0,t;
while(b&&step<100)//step表示精确位数,防止无穷循环.最后小数位数小于100位,说明结果是准确的而不是近似的
{
b*=2;
t=(int)b;
r.push_back(t+'0');//取整数部分t
b-=t;
}//不用反转
vector<char>::iterator it;
for(it=r.begin();it!=r.end();++it)cout<<*it;
cout<<endl;
// fout<<r.size()<<endl;
return 0;
}

luciferisnotsatan 2010-12-15
  • 打赏
  • 举报
回复
先把double内存中的值读出来作为long long整数,然后用lltoa(val,puf,2)就行了,vc里是 i64toa
qq120848369 2010-12-12
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{
double transfer = 6.552251;

size_t size = sizeof(transfer);

unsigned char *pTransBegin = (unsigned char*) (&transfer);
unsigned char *pTransEnd = pTransBegin+size-1;

while( (pTransEnd - pTransBegin) >= 0)
{
cout<<hex<<(int)(*pTransEnd);

--pTransEnd;
}

return 0;
}
jackyjkchen 2010-12-12
  • 打赏
  • 举报
回复
呃,想起来格式化函数貌似不能直接格式化城01字符串,那就用如下函数吧,类型自己改

const Char *tonum = "01";
void ByteToBin(const Byte *pInput,Int32 iInlen,Byte *pOutput)
{
Int32 i = 0,j = 7;
while (i < iInlen)
{
for (j=7; j>=0; j--)
*pOutput++ = tonum[(pInput[i] >> j) & 0x01];
++i;
}
}
ww884203 2010-12-12
  • 打赏
  • 举报
回复
转换?怎么转?说一下要求啊
jackyjkchen 2010-12-12
  • 打赏
  • 举报
回复
你所说的二进制是什么概念?

你直接copy双精度变量的内存,里面就是二进制内容。

想转成01字符串的话,如下

double d;
char *p = (char*)&d;
再针对p做sprintf即可

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧