注册 登录
编程论坛 新人交流区

一道c++题的算法?

moonandsun 发布于 2007-10-23 11:17, 283 次点击

c++编程输出long duoble型数12345067891023456的二进制位码?
请高手能给出程序谢谢了.
我有个在网上找的看不明白大家帮着侃侃
#include<iostream>
using namespace std;

void showbin(int n)
{
static char s[9];
for (int i =0;i<8;i++)
{
s[7-i] = n%2==0?48:49;
n/=2;
}
s[8] = 0;
cout<<s;
}

main()
{
double d = 12345.67891023456;
char t;
char* q;
int k;
for (int i=0;i<8;i++)
{
t = *((char*)&d+i);
showbin(int(t));
}
cout<<endl;
}

7 回复
#2
酒浪子2007-10-24 20:25
顶!
#3
冰山雪狼2007-10-24 21:58
还没有学过这个东西.....
帮不了你,还是请高手来吧
#4
yephone2007-10-26 13:59
#5
yoapple2007-10-26 15:33

void displayinbase(int n,int base)//2<=base<=10,base就是你要转换的进制,如2,8进制
{
if(n>0)
{
displayinbase(n/base,base);
cout<<n%base;
}
}
这是一个递归算法,比上面的方法好多了

#6
dadoujiao2007-10-26 15:42

#7
liuming8362007-10-26 15:56
找书看看
#8
DaTun2007-10-26 21:40
这个程序要求是long double 型,这个数不应该只限制在整数范围内,有小数部分的话程序应该复杂些
编程的过程应该顺着十进制数转换成二进制数的方法编
1