注册 登录
编程论坛 数据结构与算法

求二进制转为十进制算法的思想

不会数据结构 发布于 2014-05-10 12:08, 1772 次点击
求用文字描述下用栈把二进制转化为十进制的思想,谢谢
11 回复
#2
wp2319572014-05-10 12:28
手工咋弄?
程序代码大多数都是模拟手工的实现过程
#3
longxingxiu2014-05-10 18:12
回复 楼主 不会数据结构
直接按照二进制转化十进制转化不就行了。%d输出
#4
不会数据结构2014-05-11 20:23
回复 2 楼 wp231957
就是讲一下思想,代码我想自己写写看。就是不知道算法的大概步骤
#5
不会数据结构2014-05-11 20:24
回复 3 楼 longxingxiu
感觉不太理解
#6
longxingxiu2014-05-16 22:26
回复 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);

}
#7
不会数据结构2014-05-17 10:44
回复 6 楼 longxingxiu
按照你的来运行,可以执行但好像结果输出的值和算过的值不一样额,而且我想用的是栈来解决的
#8
funyh2502014-05-17 15:19
学习了
#9
funyh2502014-05-17 20:37
#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;


}

贴出来晒晒
望大神给点意见
#10
icanbestrong2014-05-17 20:49
我觉得很简单嘛。每除以2就将余数压入栈,再把商作为被除数继续除2,重复上述动作。直到商为0为止。最后按照栈顶到栈底的顺序输出值即是转化成的二进制数啊
#11
longxingxiu2014-05-18 12:22
按位运算最快了
程序代码:
#include<stdio.h>
#include<string.h>

int main()
{

 char a[33];

 int i,num = 0;int count=0;

 printf("请输入要转换的二进制数:");

 scanf("%s", a);

 count=strlen(a)-1;

 //printf("%s",a);
for( count;count>=0; count--)

 {
  num*=2; /*如果用位运算的话,速度会更快*/
  num+=a[count]-'0';

 }

 printf("十进制结果:%d\n", num);

 return 0;
}
#12
不会数据结构2014-05-18 23:20
回复 10 楼 icanbestrong
不太懂,给个大概代码可以么?
1