64,681
社区成员
发帖
与我相关
我的任务
分享
//编程输出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;
}
#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;
}