返回 课程
信奥AC之路-3级
0% 完成
0/0 步骤
-
第一课:数组基础4 主题|小节
-
第二课:数组基础二6 主题|小节
-
第三课:数组基础三6 主题|小节
-
第四课:数组基础四7 主题|小节
-
第五课:数组基础五5 主题|小节
-
第六课:数组用于统计,去重,排序5 主题|小节
-
第七课:冒泡排序6 主题|小节
-
第八课:数组连续性元素6 主题|小节
-
第九课:数组综合一7 主题|小节
-
第十课:字符数组7 主题|小节
-
第十一课:字符数组基础应用5 主题|小节
-
第十二课:字符数组基础应用二6 主题|小节
-
第十三课:字符数组进阶6 主题|小节
-
第十四课:字符串进阶二6 主题|小节
-
第十五课:字符串(STL)9 主题|小节
-
第十六课:字符串基础6 主题|小节
-
第十七课:字符串函数6 主题|小节
-
第十八课:字符串函数二4 主题|小节
-
第十九课:sort函数7 主题|小节
-
第二十课:字符串进阶7 主题|小节
-
第二十一课:字符串进阶二6 主题|小节
-
第二十二课:进制转换--十进制转其他进制5 主题|小节
-
第二十三课:进制转换--其他进制转十进制5 主题|小节
-
第二十四课:二进制,八进制,十六进制转换5 主题|小节
-
第二十五课:数据编码基础6 主题|小节
-
第二十六课:位运算基础6 主题|小节
课 进展
0% 完成
“小朋友们,”我微笑着说,”计算机内部使用的是二进制,只有0和1两个数字。今天我们首先来学习如何将二进制数转换成我们熟悉的十进制数。”
23.1.1 二进制转十进制原理
二进制数转换为十进制数的原理是:从右到左,每一位的值是2的幂次方,第i位(从右往左数,从0开始)的值是该位数字乘以2^i。
例如:二进制数1101转换为十进制:
- 1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13
23.1.2 二进制转换十进制
题目描述: 请将一个 25 位以内的 2 进制正整数转换为 10 进制!
输入格式: 输入一个 25 位以内的二进制正整数。
输出格式: 该数对应的十进制。
样例输入:
111111111111111111111111
样例输出:
16777215
代码实现:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s; // 用字符串存储二进制数
cin >> s; // 输入二进制字符串
int a = 0; // 初始化十进制结果为0
// 从左到右遍历二进制字符串
for(int i = 0; i < s.size(); i++){
a = a * 2 + (s[i] - '0'); // 每次乘2并加上当前位的值
}
cout << a; // 输出十进制结果
return 0;
}
算法解析:
- 使用字符串存储二进制数,因为可能很长(最多25位)
- 从左到右遍历字符串,使用秦九韶算法(霍纳法则)
- 每遍历一位,将之前的结果乘以2,再加上当前位的值
s[i] - '0'
将字符’0’或’1’转换为数字0或1- 最终得到十进制结果