| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1772 人关注过本帖
标题:求二进制转为十进制算法的思想
只看楼主 加入收藏
不会数据结构
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:11 
求二进制转为十进制算法的思想
求用文字描述下用栈把二进制转化为十进制的思想,谢谢
搜索更多相关主题的帖子: 二进制 十进制 
2014-05-10 12:08
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
手工咋弄?
程序代码大多数都是模拟手工的实现过程

DO IT YOURSELF !
2014-05-10 12:28
longxingxiu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:64
注 册:2014-4-23
收藏
得分:5 
回复 楼主 不会数据结构
直接按照二进制转化十进制转化不就行了。%d输出
2014-05-10 18:12
不会数据结构
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-4
收藏
得分:0 
回复 2 楼 wp231957
就是讲一下思想,代码我想自己写写看。就是不知道算法的大概步骤
2014-05-11 20:23
不会数据结构
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-4
收藏
得分:0 
回复 3 楼 longxingxiu
感觉不太理解
2014-05-11 20:24
longxingxiu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:64
注 册:2014-4-23
收藏
得分:0 
回复 5 楼 不会数据结构
程序代码:
#include "stdio.h"
#include <stdlib.h>
#define N 100
void conversion(int *q,int C);
void main()
{
    printf("请输入要转换的二进制数:");
    int *p;int count=1;int i;
    p=(int*)malloc(sizeof(int) * N);
    while(getchar() != '\n')
    {scanf("%d",p++);count++;}
    for(i=0;i<count;i++)
    {printf("输入的二进制数为:\n%d",*(p+i));}
    conversion(p,count);

}
void conversion(int *q,int C)
{
    int result=0;int i;
    for(i=0;i<C;i++)
    {
        result+=(*q*2);
    }
    printf("转换后的结果为:%d",result);

}
2014-05-16 22:26
不会数据结构
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2014-5-4
收藏
得分:0 
回复 6 楼 longxingxiu
按照你的来运行,可以执行但好像结果输出的值和算过的值不一样额,而且我想用的是栈来解决的
2014-05-17 10:44
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:5 
学习了

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-05-17 15:19
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:0 
#include <iostream>
#include <bitset>
#include <string>

using namespace std;
int su(int n)
{
    if(n==0)
        return 1;
    else
      
           return 2*su(n-1);
      
}

      
void main()
{
    const int M(20);
    int sn[M];
    cout<<"请输入要转换的二进制数:";
    string line;
    getline(cin,line);
    if(line.find("2,3.4.5.6.7.8.9"))
      {
           cout<<"错误!二进制数只包含0和1"<<endl;
           exit(0);
      }
    bitset<M> bs(line);

   int m=line.size();
    int su(int n);
    for(int a=0,i=0;a<m;a++,i++)
    {
        if(bs[a])
           
        sn[i]=su(a);
        
        else
            sn[i]=0;
    }
    int sm(0);
    for(int i=0;i<m;i++)
    {
            sm+=sn[i];
    }
    cout<<endl<<"转换为十进制数为:"<<sm<<endl;


}

贴出来晒晒
望大神给点意见

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-05-17 20:37
icanbestrong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:100
专家分:138
注 册:2013-3-13
收藏
得分:5 
我觉得很简单嘛。每除以2就将余数压入栈,再把商作为被除数继续除2,重复上述动作。直到商为0为止。最后按照栈顶到栈底的顺序输出值即是转化成的二进制数啊
2014-05-17 20:49
快速回复:求二进制转为十进制算法的思想
数据加载中...
 
   



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

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