1. 二进制与十进制转换原理剖析
在计算机科学中,二进制与十进制的相互转换是最基础也最重要的概念之一。理解这两种进制之间的转换原理,不仅能帮助我们更好地理解计算机底层的数据表示方式,也是学习各种编程语言和算法的基石。
1.1 二进制转十进制的基本原理
二进制数转换为十进制数的核心思想是"按权展开"。每个二进制位(0或1)都有一个对应的权值,这个权值是2的幂次方,从右到左依次是2^0、2^1、2^2...以此类推。
举个例子,二进制数1101转换为十进制的过程如下:
12^3 + 12^2 + 02^1 + 12^0 = 8 + 4 + 0 + 1 = 13
在C++实现中,我们需要注意字符串处理时的ASCII码转换问题。当从字符串中取出字符'0'或'1'时,实际上得到的是它们的ASCII码值(48和49),所以需要减去'0'的ASCII码值48来得到实际的数字0或1。
1.2 十进制转二进制的基本原理
十进制转二进制采用的是"除2取余法"。具体步骤是:
- 将十进制数不断除以2,记录每次的余数(0或1)
- 直到商为0时停止
- 将记录的余数按从后往前的顺序排列,就是对应的二进制数
例如,将十进制数13转换为二进制:
13 ÷ 2 = 6 余 1
6 ÷ 2 = 3 余 0
3 ÷ 2 = 1 余 1
1 ÷ 2 = 0 余 1
将余数倒序排列得到1101
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. C++实现详解
2.1 二进制转十进制的C++实现
cpp复制#include<iostream>
#include<string>
#include<cmath>
using namespace std;
int main(){
int x;
cin>>x;
string str=to_string(x);
int n=0;
int len=str.length();
for(int i=len-1;i>=0;i--){
n+=(str[i]-'0')*pow(2,i);
}
cout<<n;
}
这段代码有几个关键点需要注意:
- 使用
to_string将输入的整数转换为字符串,方便逐位处理 - 循环从字符串末尾开始(对应二进制的
