| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1425 人关注过本帖
标题:简单的10进制换2进制 想知道这段代码是哪里出了问题 求助!!!!!
只看楼主 加入收藏
blueapple118
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-12-25
收藏
得分:0 
回复 4楼 madfrogme
您的这段代码,不是很懂,是否可以详细解释一下
2012-01-15 17:04
新手菜鸟鸟
Rank: 2
等 级:论坛游民
帖 子:37
专家分:57
注 册:2012-1-15
收藏
得分:0 
谢谢各位了...第一次用这种论坛 感觉帮助真的很大~~~
2012-01-15 18:34
ai8343512
Rank: 2
等 级:论坛游民
帖 子:75
专家分:94
注 册:2011-8-7
收藏
得分:0 
getchar()楼主想输出什么呢?括号里面可什么也没有啊……另外,我觉得把4改成sizeof(int)可能程序的可移植性更好些。
还有把啊a[16]也顺便改下更好些,具体怎么写用楼主自己想想吧。我就不多说了。

思考不应该由他人来指导,会思考的人不需要你来提醒他去思考一个简单的问题。
2012-01-15 19:44
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 11楼 blueapple118
这段代码10楼也说了,硬编码,
我只是假设有8位,所以最多只能转换255
step1 把1<<7 移到最高位,如果是要转换129
10000001

则经过比较number=number-1*128=1
看出来了吧,减128
减64
32
16




就看那一位上是不是1

The quieter you become, the more you can hear
2012-01-15 20:43
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
回复 10楼 TonyDeng
应该改为sizeof(int)-1吧

The quieter you become, the more you can hear
2012-01-15 20:46
wujilei5
Rank: 2
等 级:论坛游民
帖 子:9
专家分:11
注 册:2010-3-27
收藏
得分:0 
这么干效率太低了,有库函数可以用的吧itoa之类的
2012-01-16 12:46
回首依依
Rank: 7Rank: 7Rank: 7
来 自:苏州
等 级:黑侠
威 望:1
帖 子:193
专家分:524
注 册:2011-12-3
收藏
得分:0 
#include <stdio.h>
int main()
{
    int i,j,m,n;
    int a[16]={0};
printf("input the decimalism number(0~32767):\n");
scanf("%d",&n);
for (m=0;m<15;m++)
{
    i=n%2;
    j=n/2;
    n=j;
    a[m]=i;
}
for (m=15;m>=0;m--)
{
    printf("%d",a[m]);
    if(m%4==0)
    printf(" ");
}
printf("\n");
getchar();
return 0;
}
2012-01-16 13:47
jiangchuanze
Rank: 2
等 级:论坛游民
帖 子:8
专家分:13
注 册:2012-1-19
收藏
得分:0 
9楼正解
2012-01-20 17:28
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
回复 6楼 madfrogme
小兄弟的意识很好,确实可以用递归。抛开效率不说,递归的代码简洁明了,很漂亮。
写个例子。虽然很短,但各位别看完了事。其中隐藏这一个缺陷,有兴趣的不妨找找缺陷在哪儿?该如何消除?
程序代码:
#include<stdio.h>
void showInBit(unsigned int a)
{
    if(!a) return;
    showInBit(a >> 1);
    putchar((a & 1) + '0');
}
int main()
{
    int a;
    scanf("%d", &a);
    showInBit(a);
    return 0;
}

重剑无锋,大巧不工
2012-01-20 19:35
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 19楼 beyondyf
是不是无法表示0的二进制?

梅尚程荀
马谭杨奚







                                                       
2012-01-20 20:29
快速回复:简单的10进制换2进制 想知道这段代码是哪里出了问题 求助!!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.134449 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved