| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5562 人关注过本帖
标题:二进制数据转换成十进制数
只看楼主 加入收藏
裂地劈龙
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-12-11
结帖率:0
收藏
已结贴  问题点数:15 回复次数:5 
二进制数据转换成十进制数
输入1个无符号二进制数串,编写程序将其转换成对应的十进制数,并输出。

输入格式:
输入1个二进制数串(至少1位且不超过16位)。

输出格式:
输出转换后的十进制数。

输入样例:
0110110001100
输出样例:
3468


只用数组,不要用函数做
搜索更多相关主题的帖子: 二进制数 输出 输入 十进制 转换 
2019-12-11 19:45
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:5 
#include<stdio.h>
#include<math.h>

int main()
{
    int n=0,sum=0;
    char a[16]={0};

    printf("请输入二进制数据:");
    while((a[n++]=getchar())!='\n');
    for(int i=n-2;i>=0;i--)
        sum+=(a[i]-'0')*(int)pow(2,n-2-i);

    printf("转换后的十进制数:%d",sum);
    return 0;
}

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2019-12-11 20:37
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:5 
#include <stdio.h>
long int btd(char *s) /*将以字符串形式存储在s地址中的二进制数字转换为对应的十进制数字*/
{
long int rt=0;
int i,n=0;
while (s[n]) n++;
for (--n,i=n; i>=0; i--)
rt|=(s[i]-48)<<n-i;
return rt;
}
int main(int argc, char* argv[])
{
printf("%ld",btd("11100"));/*示例,输出11011B的十进制形式*/
return 0;
}
2019-12-11 21:16
裂地劈龙
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2019-12-11
收藏
得分:0 
回复 2楼 纯蓝之刃
请问为什么a[i]要-'0'呢,删去为什么是错的呢
2019-12-12 17:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54050
注 册:2011-1-18
收藏
得分:5 
替 纯蓝之刃 回答
因为 getchar() 获得的是 '0'、'1'、'2'、'3'、……
而参与计算时想要的是 0、1、2、3、……

在 asc码 中,'0'、'1'、'2'、'3'、…… 等是连在一起的,所以都减去'0'就能得到 0、1、2、3、……
2019-12-13 08:48
赵水蛇
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-1-1
收藏
得分:0 
回复 2楼 纯蓝之刃
i=n-2是为什么呢
2020-01-01 15:32
快速回复:二进制数据转换成十进制数
数据加载中...
 
   



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

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