征积算法--进制转换

zhushizu 2003-05-22 12:34:05
十进制转为二进制有多少种方法,不考虑复杂度,只要能实现!
...全文
39 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhushizu 2003-05-24
  • 打赏
  • 举报
回复
也有点道理--------------------LeeMaRS(想做DP杀手的小菜虎)
LeeMaRS 2003-05-23
  • 打赏
  • 举报
回复
方法不是越多越好的...以不变应万变才是真理~
eion的方法就是按位取
zhushizu 2003-05-23
  • 打赏
  • 举报
回复
eion(那个谁):感谢
只是兄弟愚钝,理解不了,解释一下可以吗??

zhushizu 2003-05-23
  • 打赏
  • 举报
回复
这种方法大家都知道,难道就没有更好的吗??
聪明的人不会别人说是什么就是什么!
eion 2003-05-22
  • 打赏
  • 举报
回复
void convert(char *bin, unsigned int data)
{
const static unsigned int bit[32] = {0x00000001, 0x00000002, 0x00000004, 0x00000008, 0x00000010, ..., 0x80000000};
int i = 31, j=0;

// 跳过前面的0位
for (; i; i--) if (bit[i] & data) break;

// 对后面的每一位进行赋值
for (; i; i--) bin[j++] = (data&bit[i])?'1':'0';
bin[j] = 0;
}
eion 2003-05-22
  • 打赏
  • 举报
回复
递归:
int dec2bin(int dec, int bin[])
{
int pos = 0;
if ( dec == 0) return 0;

pos = dec2bin(dec>>1, bin);
bin[pos] = dec&1;
return pos + 1;
}
dabill 2003-05-22
  • 打赏
  • 举报
回复
把十进制数分为二部分:整数部分和小数部分。
再分别处理。参照上面的方法。
就这样。简单!
qubo 2003-05-22
  • 打赏
  • 举报
回复
整数部分除2取余,小数部分乘2取整:
float s,y;
int i,x,

static int a[25];
static int b[21];
//此处得到十进制的浮点数s
x=(int)s;
y=s-x;

for(m=1;m<=24;m++)
{ a[m]=x%2;
x=x/2;
if(x==0) break;
}
for(n=1;n<=20;n++)
{ b[n]=(int)(y*2);
y=y*2-b[n];
}
printf("Bin:");
for(m=24;m>=1;m--)
printf("%d",a[m]);
printf(".");
for(n=1;n<=20;n++)
printf("%d",b[n]);

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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