如何实现任意输入一个二进制数,输出为十进制数

zhangyaowen 2004-08-11 09:55:10
如何实现任意输入一个二进制数,输出为十进制数?
...全文
1328 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
doact 2004-08-15
  • 打赏
  • 举报
回复
★★★ 那有哪位给个完整的程序。 ★★★
★★★ ★★★
★★★ 要求: ★★★
★★★ 输入一个2进制的数,C语言自动给输出一个10进制的数 ★★★
★★★ ★★★
★★★ 希望能给出详细点的注释,小弟刚出道不久...... ★★★

flyerlxg 2004-08-12
  • 打赏
  • 举报
回复
那是使用名称空间,我也是初学者,随便说说的,可能我记错了。
yangyu0806 2004-08-12
  • 打赏
  • 举报
回复
using namespace std;呢?
这句什么意思,没见main中出现过
expert2000 2004-08-12
  • 打赏
  • 举报
回复
int main()所以要return 0。

不知有没有库函数可以直接转换。
yangyu0806 2004-08-12
  • 打赏
  • 举报
回复
小弟初学有个地方不太懂,巴兄的程序里main的结尾为什么要return 0?
庄鱼 2004-08-12
  • 打赏
  • 举报
回复
随便说说,挑骨头的,不当真
庄鱼 2004-08-12
  • 打赏
  • 举报
回复
如果是任意的二进制数就有可能超出64位,也有可能是浮点数。上述的都是转为整型的情况,但其他的就无能为力了
寒雪叔叔 2004-08-12
  • 打赏
  • 举报
回复
用左移效率更高:
CString str = "11110010101101111";
long nCount = str.GetLength();
long nDest = 0;
for (long i = 0; i <= nCount - 1; i++)
{
TCHAR c = str.GetAt(i);
BYTE b = atoi(&c);
nDest = nDest << 1;
nDest += b;
}
TRACE("%d", nDest);
寒雪叔叔 2004-08-12
  • 打赏
  • 举报
回复
CString str = "11110010101101111";
long nCount = str.GetLength();
long nDest = 0;
for (long i = 0; i <= nCount - 1; i++)
{
TCHAR c = str.GetAt(i);
BYTE b = atoi(&c);
nDest *= 2; //nDest << 1;
nDest += b;
}
TRACE("%d", nDest);
newegg2002 2004-08-12
  • 打赏
  • 举报
回复
至于num*2再加上它.那是将二进制转换为十进制的步骤,不理解,
///////////////////////////////////////
至于num*2再加上它.那是将二进制转换为十进制的步骤,不难理解,
newegg2002 2004-08-12
  • 打赏
  • 举报
回复
ch-'0' 是所输入字符所代表的数字,因为在巴兄的程序中,输入的数字实在字符型 ,比如输入'1','1'-'0'即为1,
至于num*2再加上它.那是将二进制转换为十进制的步骤,不理解,
还可以用栈,,
假设用整型数组BinNum[]作栈来存储输入的二进制数,,
int DecNum=0;
int PowNum=0;
for(int i=RealLength_BinNum-1;i>=0;i--,PowNum++)
{
DecNum=DecNum+BinNum[i]*pow(2,PowNum);
}
zhangyaowen 2004-08-12
  • 打赏
  • 举报
回复
num=num*2+ch-'0';
这句什么意思?
tangfulin 2004-08-12
  • 打赏
  • 举报
回复
用移位操作,最快了
但也容易出问题
新手勿用
doact 2004-08-11
  • 打赏
  • 举报
回复
有没有一个完整一点的代码。小弟也需要这个。
RookieStar 2004-08-11
  • 打赏
  • 举报
回复
#include<iostream>
using namespace std;

int main()
{
char ch;
int num=0;
while ((ch=cin.get())!='\n')
{
if (ch!='0' && ch!= '1')
{
cerr<<"INPUT ERROR!"<<endl;
exit(1);
}
num=num*2+ch-'0';
}
cout<<num<<endl;
return 0;
}

64,633

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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