首页 > 后端开发 > C++ > 正文

c++怎么将二进制转换为十进制_c++二进制与十进制转换方法

下次还敢
发布: 2025-10-17 08:26:02
原创
521人浏览过
C++中二进制转十进制主要有三种方法:1. 手动按权展开,通过循环逐位计算;2. 使用字符串处理,避免溢出并校验输入合法性;3. 利用bitset类进行固定长度转换。

c++怎么将二进制转换为十进制_c++二进制与十进制转换方法

在C++中,将二进制数转换为十进制有多种方法,最常见的是使用数学计算逐位处理,或者借助标准库函数。下面介绍几种实用且清晰的实现方式。

1. 手动计算:按权展开法

二进制转十进制的基本原理是“按权展开”,从右到左每一位的权重是2的幂次(从0开始)。例如,二进制数1101对应的十进制为:

1×2³ + 1×2² + 0×2¹ + 1×2⁰ = 8 + 4 + 0 + 1 = 13

代码实现如下:

立即学习C++免费学习笔记(深入)”;

#include <iostream>
using namespace std;
<p>int binaryToDecimal(long long n) {
int decimal = 0, base = 1;  // base 表示当前位的权重(2^i)
while (n > 0) {
int lastDigit = n % 10;           // 取出最后一位
decimal += lastDigit <em> base;      // 加上该位对应的十进制值
base </em>= 2;                        // 权重乘以2(进入下一位)
n /= 10;                          // 去掉最后一位
}
return decimal;
}</p><p>int main() {
long long binary;
cout << "输入一个二进制数:";
cin >> binary;
cout << "对应的十进制是:" << binaryToDecimal(binary) << endl;
return 0;
}</p>
登录后复制

2. 使用字符串处理更安全的方法

当输入的二进制数较长时,用整数存储可能溢出。改用字符串可以避免这个问题,并且便于验证每一位是否为0或1。

卡拉OK视频制作
卡拉OK视频制作

卡拉OK视频制作,在几分钟内制作出你的卡拉OK视频

卡拉OK视频制作178
查看详情 卡拉OK视频制作
#include <iostream>
#include <string>
using namespace std;
<p>int binaryToDecimal(string binaryStr) {
int decimal = 0;
int power = 1;  // 当前位权重,从2^0开始</p><pre class='brush:php;toolbar:false;'>// 从右往左遍历字符串
for (int i = binaryStr.length() - 1; i >= 0; i--) {
    if (binaryStr[i] == '1') {
        decimal += power;
    } else if (binaryStr[i] != '0') {
        cout << "错误:包含非二进制字符!" << endl;
        return -1;
    }
    power *= 2;
}
return decimal;
登录后复制

}

int main() { string binary; cout << "输入一个二进制字符串:"; cin >> binary; int result = binaryToDecimal(binary); if (result != -1) { cout << "对应的十进制是:" << result << endl; } return 0; }

3. 使用bitset进行简单转换(已知长度)

如果你知道二进制位数(比如8位、16位),可以用std::bitset简化转换过程。

#include <iostream>
#include <bitset>
using namespace std;
<p>int main() {
string binary = "1101";
bitset<8> bs(binary);  // 假设最多8位
cout << "十进制是:" << bs.to_ulong() << endl;
return 0;
}</p>
登录后复制

注意:to_ulong()会返回无符号长整型,适用于合法二进制字符串。

4. 十进制转二进制(补充)

顺带一提,十进制转二进制常用“除2取余”法:

#include <iostream>
using namespace std;
<p>void decimalToBinary(int n) {
if (n == 0) {
cout << "0";
return;
}
while (n > 0) {
cout << n % 2;
n /= 2;
}
cout << endl;
}
// 注意:输出是逆序的,实际应用中可用栈或字符串反转</p>
登录后复制

基本上就这些。手动循环适合学习理解,字符串法最实用,bitset适合固定长度场景。选择合适方法即可。

以上就是c++++怎么将二进制转换为十进制_c++二进制与十进制转换方法的详细内容,更多请关注php中文网其它相关文章!

c++速学教程(入门到精通)
c++速学教程(入门到精通)

c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号