二进制,八进制,十六进制转十进制 c++

news2025/2/24 3:01:08

紧接着十进制转二进制,八进制,十六进制-CSDN博客这篇文章

输入一个二进制,八进制的数,怎样能转化为十进制呢?

原理如下:

K进制转十进制

按权相加法展开成一个多项式,每项是该位的数码与相应的权之积,把多项式按十进制数的规则进行求和,所得结果即是该数的十进制。

公式:abcd.efg(K)=d*K^0+c*K^1+b*K^2+a*k^3+e*K^-1+f*K^-2+g*K^-3(10)

例:1101.01(2)=1*2^0+0*2^1+1*2^2+1*2^3+0*2^-1+1*2^-2=1+0+4+8+0+0.25=13.25(10)

C知道的回答:

在C++中,可以使用以下方法将二进制数转换为十进制数:

  1. 使用字符串流(stringstream): 首先,将二进制数作为字符串输入到字符串流中,然后使用字符串流的输入运算符(>>)将其转换为十进制数。

    #include <iostream>
    #include <sstream>
    using namespace std;
    
    int binaryToDecimal(string binary) {
        stringstream ss;
        ss << binary;
        int decimal = 0;
        ss >> decimal;
        return decimal;
    }
    
    int main() {
        string binary = "101010";
        int decimal = binaryToDecimal(binary);
        cout << "Decimal: " << decimal << endl;//编者注:?答案=输入
        return 0;
    }
  2. 使用位运算: 可以使用位运算符和循环来逐位计算二进制数的十进制值。

    #include <iostream>
    using namespace std;
    
    int binaryToDecimal(string binary) {
        int decimal = 0;
        int power = 1;
        for (int i = binary.length() - 1; i >= 0; i--) {
            if (binary[i] == '1') {
                decimal += power;
            }
            power *= 2;
        }
        return decimal;
    }
    
    int main() {
        string binary = "101010";
        int decimal = binaryToDecimal(binary);
        cout << "Decimal: " << decimal << endl;
        return 0;
    }

如果懂得原理的话可以用,我又编了一段易理解的代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int k,n,a,b,c,d,e,f,g,h,i,j;
    cout<<"请输入数的进制(2或8):";
	cin>>k;
	if(k==2){
		cout<<"请输入一个二进制整数:";
        cin>>n;
	}
	if(k==8){
		cout<<"请输入一个八进制整数:";
        cin>>n;
	}
    a=n/1%10;
    b=n/10%10;
    c=n/100%10;
    d=n/1000%10;
    e=n/10000%10;
    f=n/100000%10;
    g=n/1000000%10;
    h=n/10000000%10;
    i=n/100000000%10;
    j=n/1000000000%10;
    cout<<"转换后的二进制(B)数为:";
cout<<a*1+b*k+c*k*k+d*k*k*k+e*k*k*k*k+f*k*k*k*k*k+g*k*k*k*k*k*k+h*k*k*k*k*k*k*k+i*k*k*k*k*k*k*k*k+j*k*k*k*k*k*k*k*k*k;
    return 0;
}

 

那十六进制转十进制呢?

C知道的回答:

在C++中,可以使用以下方法将十六进制数转换为十进制数:

  1. 使用标准库函数: 可以使用std::stoi函数将十六进制字符串转换为十进制整数。例如:

    #include <iostream>
    #include <string>
    
    int main() {
        std::string hexStr = "1A";
        int decimalNum = std::stoi(hexStr, nullptr, 16);//编者注:?此处有报错
        std::cout << "Decimal: " << decimalNum << std::endl;
        return 0;
    }

    输出结果为:Decimal: 26

  2. 使用自定义函数: 可以编写自定义函数来将十六进制数转换为十进制数。例如:

    #include <iostream>
    #include <string>
    
    int hexToDecimal(std::string hexStr) {
        int decimalNum = 0;
        int base = 1;
        int size = hexStr.size();
    
        for (int i = size - 1; i  0; i--) {
        //编者注:此处有误,应该为:for(int i=size-1;i>=0;i--)
            if (hexStr[i] >= '0' && hexStr[i] <= '9') {
                decimalNum += (hexStr[i] - '0') * base;
            } else if (hexStr[i] >= 'A' && hexStr[i] <= 'F') {
                decimalNum += (hexStr[i] - 'A' + 10) * base;
            } else if (hexStr[i] >= 'a' && hexStr[i] <= 'f') {
                decimalNum += (hexStr[i] 'a' + 10) * base;
                //编者注:此处有误,应该为:decimalNum+=(hexStr[i]='a'+10)*base;
            }
            base *= 16;
        }
    
        return decimalNum;
    }
    
    int main() {
        std::string hexStr = "1A";
        int decimalNum = hexToDecimal(hexStr);
        std::cout << "Decimal: " << decimalNum << std::endl;
        return 0;
    }

    输出结果为:Decimal: 26

(C知道的回答不包括编者注编者注为编者后期发现的错误)

 最后代码:

#include<bits/stdc++.h>
using namespace std;
int hexToDecimal(std::string hexStr) {
    int decimalNum = 0;
    int base = 1;
    int size = hexStr.size();

    for (int i = size - 1; i >= 0; i--) {
        if (hexStr[i] >= '0' && hexStr[i] <= '9') {
            decimalNum += (hexStr[i] - '0') * base;
        } else if (hexStr[i] >= 'A' && hexStr[i] <= 'F') {
            decimalNum += (hexStr[i] - 'A' + 10) * base;
        } else if (hexStr[i] >= 'a' && hexStr[i] <= 'f') {
            decimalNum += (hexStr[i] = 'a' + 10) * base;
        }
        base *= 16;
    }

    return decimalNum;
}
int main(){
    int k,a,b,c,d,e,f,g,h,i,j;
    cout<<"请输入数的进制(2,8或16):";
	cin>>k;
	if(k==2){
		int n;
		cout<<"请输入一个二进制(B)整数:";
        cin>>n;
        a=n/1%10;
        b=n/10%10;
        c=n/100%10;
        d=n/1000%10;
        e=n/10000%10;
        f=n/100000%10;
        g=n/1000000%10;
        h=n/10000000%10;
        i=n/100000000%10;
        j=n/1000000000%10;
        cout<<"转换后的十进制(D)数为:";
        cout<<a*1+b*k+c*k*k+d*k*k*k+e*k*k*k*k+f*k*k*k*k*k+g*k*k*k*k*k*k+h*k*k*k*k*k*k*k+i*k*k*k*k*k*k*k*k+j*k*k*k*k*k*k*k*k*k;
	}
	if(k==8){
		int n;
		cout<<"请输入一个八进制(O)整数:";
        cin>>n;
        a=n/1%10;
        b=n/10%10;
        c=n/100%10;
        d=n/1000%10;
        e=n/10000%10;
        f=n/100000%10;
        g=n/1000000%10;
        h=n/10000000%10;
        i=n/100000000%10;
        j=n/1000000000%10;
        cout<<"转换后的十进制(D)数为:";
        cout<<a*1+b*k+c*k*k+d*k*k*k+e*k*k*k*k+f*k*k*k*k*k+g*k*k*k*k*k*k+h*k*k*k*k*k*k*k+i*k*k*k*k*k*k*k*k+j*k*k*k*k*k*k*k*k*k;
	}
	if(k==16){
		std::string hexStr;
		std::cout<<"请输入一个十六进制(H)整数:";
        std::cin>>hexStr;
        int decimalNum = hexToDecimal(hexStr);
        std::cout << "转换后的十进制(D)数为:" << decimalNum;
	} 
    return 0;
}

样例运行结果:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1654601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Maven+Junit5 + Allure +Jenkins 搭建 UI 自动化测试实战

文章目录 效果展示Junit 5Junit 5 介绍Junit 5 与 Junit 4 对比PageFactory 模式编写自动化代码公共方法提取测试用例参数化Jenkins 搭建及配置参数化执行生成 Allure 报告Maven 常用命令介绍POM 文件效果展示 本 chat 介绍 UI 自动化测试框架的搭建: 运用 page factory 模式…

高速开箱机价格与性能解析:如何挑选适合您的开箱解决方案?

随着电商和物流行业的迅猛发展&#xff0c;高效、自动化的包装设备成为了提升工作效率、减少人工成本的必备利器。高速开箱机作为其中的重要一环&#xff0c;其性能与价格成为了许多企业和个人关注的焦点。星派将深入探讨高速开箱机的价格与性能之间的关系&#xff0c;帮助您在…

基于springboot+vue+Mysql的口腔管理平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

Linux无root配置Node,安装nvm

1. 安装NVM&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash # 或者&#xff0c;如果你使用wget wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash 对于bash用户&#xff0c;可以运行&…

时序图详解

1.这是iic总线在回应时候的时序图&#xff0c;data in代表eeprom收到数据&#xff0c;回stm32的ack&#xff0c;数据回应&#xff0c;data out代表stm32收到eeprom的消息&#xff0c;数据输出ack回应 2.交叉线 代表在这一次输出高电平&#xff0c;或者在这一次也可能输出低电…

《武林秘籍》——闪侠惠递如何让消费者寄快递更安心!

现如今&#xff0c;网上下单寄快递的便利性让众多人享受到了电商物流飞速发展带来的红利性。今天小编直接介绍一款寄快递特别省钱的利器&#xff0c;就是利用闪侠惠递来寄快递。闪侠惠递寄快递&#xff0c;真正的实现了便宜寄快递发物流的便捷性&#xff0c;开创了低价发快递的…

Hypack 2024 简体中文资源完整翻译汉化已经全部完成

Hypack 2024 简体中文资源完整翻译汉化已经全部完成 Hypack 2024&#xff0c;资源汉化共翻译11065条。毕竟涉及测绘、水文、疏浚等专业术语太多&#xff0c;翻译有很多理解不正确的地方&#xff0c;望各位专业人员指正。 压缩包内包含Hypack 2024、Hypack 2022、Hypack 2021、…

企业如何用数字化为预提摊销业务赋能?

对于企业来说&#xff0c;想要实现系统化、智能化、自动化的预提摊销管理&#xff0c;需要做足哪些功课&#xff1f;常见场景下的业务难题又该如何破解&#xff1f;今天胜意科技就给大家介绍一下&#xff0c;企业如何通过数字化手段搞定预提摊销业务难题。 一、预提摊销痛点 在…

Java 三大特性之继承

目录 一、为什么需要继承&#xff1f; 二、继承概念 三、继承的语法 四、子类访问父类成员 五、super关键字 六、继承关系下的构造方法 七、继承关系下的初始化 八、protected关键字 九、继承的三种方式 十、final关键字 十一、继承和组合 一、为什么需要继承&#…

可视化面板布局适配屏幕-基于 flexible.js + rem 智能大屏适配

可视化面板布局适配屏幕-基于 flexible.js rem 智能大屏适配 VScode 安装cssrem插件引入flexible.js在之后的开发都使用rem为单位&#xff0c;安装cssrem插件就是为了快捷将px转为rem我们的设计稿是1920px&#xff0c;设置最小宽度为1024px&#xff0c;最后&#xff0c;我们可…

(2024,LSTM,Transformer,指数门控,归一化器状态,多头内存混合)xLSTM:扩展的 LSTM

xLSTM: Extended Long Short-Term Memory 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. 扩展的 LSTM 2.1 LSTM 回顾 2.2 sLSTM 2.3 mLSTM 2.4 xLSTM 架构 2…

Java进阶06List集合泛型

Java进阶06 集合 一、集合及其体系结构 集合是一个长度可变的容器 1、集合的体系结构 1.1 单列集合 单列集合使用add()方法添加集合元素&#xff0c;一次只能添加一个元素。 单列集合均实现了Collection接口&#xff0c;该接口还有两个子接口List和Set。 List接口 List集合…

详细分析McCabe环路复杂度(附例题)

目录 前言1. 基本知识2. 例题 前言 该知识点常出在408或者软考中&#xff0c;对此此文重点讲讲理论知识以及例题 对于例题平时看到也会更新 1. 基本知识 McCabe环路复杂度是一种用于衡量软件代码复杂性的指标&#xff0c;主要是通过计算代码中的控制流图中的环路数量来衡量…

为什么选择ATECLOUD自动化测试平台?

在当今飞速发展的时代&#xff0c;一切都在不断进步与变革&#xff0c;电测行业也由手动测试逐步转向了自动化测试。但是随着科技的发展&#xff0c;对于产品的测试要求也越来越高&#xff0c;传统的自动化测试系统已经无法满足用户日益增长的测试需求&#xff0c;全新的ATE测试…

全国33个省228189个矿产地位置分布数据,含经纬度坐标/CSV格式

全国矿产地分布&#xff08;2021版&#xff09; 数据来源&#xff1a; 全国矿产地数据库2021版 (ngac.org.cn) http://data.ngac.org.cn/mineralresource/index.html 数据获取方法&#xff1a;树谷资料库大全&#xff08;2024年4月19日更新&#xff09; 进入网站后&#xf…

【Qt 开发基础体系】Qt信号与槽机制

文章目录 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09;2. QObject 类 connect 的介绍3. 信号与槽机制连接方式4. 信号和槽机制优势及其效率&#xff1a;3. 信号与槽机制应用 1.Qt 信号与槽机制原理&#xff08;Signal & Slot&#xff09; &#x1f42…

cesium雷达扫描(消逝圆效果)

cesium雷达扫描(消逝圆效果) 以下为源码直接复制可用 1、实现思路 通过修改“material”材质来实现轨迹球效果 2、示例代码 1、index.html <!DOCTYPE html> <html lang="en"><head><!

程序的机器级表示——Intel x86 汇编讲解

往期地址&#xff1a; 操作系统系列一 —— 操作系统概述操作系统系列二 —— 进程操作系统系列三 —— 编译与链接关系操作系统系列四 —— 栈与函数调用关系操作系统系列五 —— 目标文件详解操作系统系列六 —— 详细解释【静态链接】操作系统系列七 —— 装载操作系统系列…

漏扫神器Invicti V2024.4.0专业版

前言 Invicti Professional是Invicti Security公司推出的一个产品&#xff0c;它是一种高级的网络安全扫描工具。Invicti Professional旨在帮助组织发现和修复其网络系统中的潜在安全漏洞和弱点。它提供了全面的漏洞扫描功能&#xff0c;包括Web应用程序和网络基础设施的漏洞扫…

水库安全无忧,漫途智能监测方案守护大坝安全!

水库大坝作为水利工程的重要组成部分&#xff0c;不仅承担着防洪、蓄水、灌溉、发电等多重功能&#xff0c;同时也关系着人民群众的生命财产安全。 然而&#xff0c;随着时间的推移&#xff0c;许多水库大坝存在稳定性不足、渗漏现象严重、裂缝和断面不足等问题&#xff0c;安…