C++题 十进制转二进制

文章目录

  • 1. 使用C++20 std::format
  • 2. 使用 std::bitset 类
  • 3. 手动实现十进制到二进制的转换
    • 反过来,手动二进制到十进制

VisualStudio2022使用C++,进行十进制到二进制的转换,常见的实现方式

1. 使用C++20 std::format

需要将VisualStudio默认的标准修改为C++20
菜单“项目”-“项目属性”,打开如下对话框
在这里插入图片描述
代码中加入头文件

#include<iostream>
#include<format>
#include<string>
using namespace std;int main()
{int decimalVal = 68;//使用format进行十进制转二进制string bStr = format("{:b}", decimalVal);//无前缀string bStrPre = format("{:#b}", decimalVal);//0b前缀cout << "Decimal: " << decimalVal << endl;cout << "Binary: " << bStr << endl;cout << "Binary with prefix: " << bStrPre << endl;return 0;
}

输出结果为
Decimal: 68
Binary: 1000100
Binary with prefix: 0b1000100

2. 使用 std::bitset 类

bitset是C++标准库中的一个模板类,处理二进制位

#include<iostream>
#include<bitset>
using namespace std;
int main()
{int decimalVal = 68;//用bitset转换为二进制,8位长度bitset<8> binaryVal(decimalVal);cout << "Decimal:\t" << decimalVal << endl;cout << "Binary:\t" << binaryVal << endl;return 0;
}

适用于固定位数,会自动补零
但是如果想输出结果是不定长度的,可以前按照一个较大的固定位数转换,然后将其转为字符串,再去掉高位不必要的零。

3. 手动实现十进制到二进制的转换

提取每一位并构造一个二进制字符串,有助于学习和理解基本的进制转换,函数也可以写成递归形式

#include<iostream>
#include<string>
using namespace std;string decimalToBinary(int decimalVal)
{string binaryVal = "";//初始化二进制位串为空while (decimalVal > 0){binaryVal = to_string(decimalVal % 2) + binaryVal;//将余数拼接到二进制位串的左侧decimalVal /= 2;}return binaryVal;
}
void decimalToBinaryRec(int decimalVal)
{if(decimalVal > 1){decimalToBinaryRec(decimalVal / 2); //递归处理}cout << (decimalVal % 2); //输出余数,即二进制位,递归结束后倒序输出}
int main()
{int dVal = 68;cout << "Decimal: " << dVal << endl;cout << "Binary: ";decimalToBinaryRec(dVal);cout << endl;return 0;
}

输出
Decimal: 68
Binary: 1000100

反过来,手动二进制到十进制

遍历二进制字符串,从最低位到最高位,依次乘以 2 的对应次方,然后累加到 decimalValue 中

#include<iostream>
#include<string>
#include<cmath>
using namespace std;int binaryToDecimal(const string& binaryStr)
{int decimalVal = 0;int length = binaryStr.length();int i;//从右到左遍历二进制字符串for (i = 0; i < length; i++){if (binaryStr[length - 1 - i] == '1'){decimalVal += pow(2, i);//每一位的权重为2的i次方}}return decimalVal;
}
int main()
{string bStr = "10001010";//二进制字符串int dVal;dVal = binaryToDecimal(bStr);cout << "Decimal: " << dVal << endl;return 0;
}

如果二进制已经以整数的形式存在,可以直接将其转换为十进制数显示

#include<iostream>
using namespace std;int main()
{int binaryVal = 0b10001010; // 二进制字面量,直接赋给整型变量// 默认十进制输出cout << "Decimal: " << binaryVal << endl;return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux高阶——0928—Github本地仓库与云端仓库关联

1、安装代理软件 steam 选择Github和系统代理模式&#xff0c;一键加速即可 2、 安装Git 3、访问Github网站&#xff0c;创建新用户 4、Github探索 &#xff08;1&#xff09;Explore探索标签 &#xff08;2&#xff09;工程结构 用户名/仓库名 自述文件&#xff0c;用markdo…

【笔记】I/O总结王道强化视频笔记

文章目录 从中断控制器的角度来理解整个中断处理的过程复习 处理器的中断处理机制**中断驱动I/O方式** printf——从系统调用到I/O控制方式的具体实现1轮询方式下输出一个字符串(程序查询)中断驱动方式下输出一个字符串中断服务程序中断服务程序与设备驱动程序之间的关系 DMA方…

线性代数在大一计算机课程中的重要性

线性代数在大一计算机课程中的重要性 线性代数是一门研究向量空间、矩阵运算和线性变换的数学学科&#xff0c;在计算机科学中有着广泛的应用。大一的计算机课程中&#xff0c;线性代数的学习为学生们掌握许多计算机领域的关键概念打下了坚实的基础。本文将介绍线性代数的基本…

数据库——创立表和库

数据库&#xff08;Database&#xff09;是一个用于存储、管理和检索数据的系统。它可以组织结构化数据&#xff0c;支持高效的存取和操作。数据库通常由一个数据库管理系统&#xff08;DBMS&#xff09;来支持&#xff0c;常见的DBMS包括&#xff1a; 关系数据库&#xff08;R…

Java创建型模式(二)——工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式、工厂模式扩展等完整详解,附有代码——案例)

文章目录 五.工厂模式5.1 概述5.2简单工厂模式5.2.1 概述5.2.2 结构5.2.3 实现5.2.4 优缺点5.2.5 扩展—静态工厂 5.3 工厂方法模式5.3.1概述5.3.2 结构5.3.3 实现5.3.4 优缺点 5.4 抽象工厂模式5.4.1 概述5.4.2 结构5.4.3 实现5.4.4 优缺点5.4.5 使用场景 5.5 工厂模式扩展 五…

R语言机器学习算法实战系列(三)lightGBM算法(Light Gradient Boosting Machine)

文章目录 介绍原理:应用方向:教程下载数据加载R包导入数据数据预处理数据描述数据切割设置数据对象调节参数训练模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve特征的重要性模型SHAP值解释保存模型总结系统信息介绍 LightGBM(Light Gradient B…

MyBatis-Plus 之 typeHandler 的使用

一、typeHandler 的使用 1、存储json格式字段 如果字段需要存储为json格式&#xff0c;可以使用JacksonTypeHandler处理器。使用方式非常简单&#xff0c;如下所示&#xff1a; 在domain实体类里面要加上&#xff0c;两个注解 TableName(autoResultMap true) 表示自动…

腾讯云-云直播

云直播&#xff08;Cloud Streaming Services&#xff09;为您提供极速、稳定、专业的直播云端处理服务&#xff0c;根据业务中不同直播场景的需求&#xff0c;云直播提供标准直播、快直播、慢直播和云导播台服务&#xff0c;分别针对大规模实时观看、高并发推流录制及超低延时…

数学建模算法与应用 第11章 偏最小二乘回归及其方法

目录 11.1 偏最小二乘回归概述 11.2 Matlab 偏最小二乘回归命令 Matlab代码示例&#xff1a;偏最小二乘回归 11.3 案例分析&#xff1a;化学反应中的偏最小二乘回归 Matlab代码示例&#xff1a;光谱数据的PLS回归 习题 11 总结 偏最小二乘回归&#xff08;Partial Least …

如何加密重要U盘?U盘怎么加密保护?

在日常生活中&#xff0c;我们常常使用U盘来存储和传输重要文件。然而&#xff0c;U盘的便携性也意味着它容易丢失或被盗。为了保护U盘中的数据安全&#xff0c;我们需要对U盘进行加密。本文将为您介绍如何加密重要U盘&#xff0c;以及U盘加密保护的方法。 BitLocker BitLocke…

动态规划——多状态动态规划问题

目录 一、打家劫舍 二、打家劫舍 II 三、删除并获得点数 四、粉刷房子 五、买卖股票的最佳时机含冷冻期 六、买卖股票的最佳时机含手续费 七、买卖股票的最佳时机III 八、买卖股票的最佳时机IV 一、打家劫舍 打家劫舍 第一步&#xff1a;确定状态表示 当我们每次…

『Mysql进阶』Mysql SQL语句性能分析(七)

目录 什么是Profile&#xff1f; 开启Profile功能 基本使用 分析案例 什么是Profile&#xff1f; Query Profiler是 MySQL 自带的一种 Query 诊断分析工具 &#xff0c;通过它可以分析出一条 SQL 语句的 硬件性能瓶颈 在什么地方。 通常我们是使用的 explain &#xff0c;…

企业内部文档安全外发如何挑选合适的外发系统?

企业文档的外发不仅关系到运营效率&#xff0c;更是信息安全的重要组成部分。面对B2B模式下文档交换的普遍性和重要性&#xff0c;企业内部文档的安全外发成为了众多公司关注的重点之一。 随着互联网技术的发展&#xff0c;企业之间的合作越来越紧密&#xff0c;文档的交流也变…

springboot+react实现移动端相册(上传图片到oss/ 批量删除/ 查看图片详情等功能)

相册页面及功能展示&#xff1a; react前端结构及代码&#xff1a; Java后端结构及代码 数据库结构&#xff1a; photo&#xff1a; user 这是首个利用AI自有知识构建的简易相册系统&#xff0c;项目是react构造前端spring boot构造后端。 前端有四个主要页面&#xff1…

Compose第六弹 对话框与弹窗

1.compose中怎么使用对话框&#xff1f; 2.怎么显示Popup弹窗&#xff1f; 一、Compose显示对话框 二、Popup Popup就类似以前的Popupwindow&#xff0c;我们可以看到其实上面的DropdownMenu是Popup的一个具体实现。 2.1 Popup定义 Popup的定义如下&#xff1a; Composable…

Windows 下 cocos2d-x-3.17.2 VS2017开发环境搭建

1.下载cocos2d-x-3.17.2 源码: Cocos2d-x - 成熟、轻量、开放的跨平台解决方案 2.下载Python2 Python 2.7.0 Release | Python.org 加入环境变量: 测试版本

JAVA基础 day12

一、File、IO流 File是java.io.包下的类&#xff0c;file类的对象&#xff0c;用于代表当前操作系统的文件&#xff08;可以代表文件、文件夹&#xff09;&#xff0c;使用File可以操作文件及文件夹。 注意&#xff1a;File只能对文件本身进行操作&#xff0c;不能读写文件里…

哈夫曼树和哈夫曼编码

现在需要对下列字符编码 其中我么你发现A 出现三次&#xff0c;B出现一次&#xff0c;C出现两次&#xff0c;D出现一次 那么我们统计出现次数为&#xff1a;3&#xff0c;2&#xff0c;1&#xff0c;1 我们将1&#xff0c;1组成一个树 现在统计次数变为3&#xff0c;2&#x…

Java—继承性与多态性

目录 一、this关键字 1. 理解this 2. this练习 二、继承性 2.1 继承性的理解 2.1.1 多层继承 2.2 继承性的使用练习 2.2.1 练习1 2.2.2 练习2 2.3 方法的重写 2.4 super关键字 2.4.1 子类对象实例化 三、多态性 3.1 多态性的理解 3.2 向下转型与多态练习 四、Ob…

构建高效作业管理平台:Spring Boot师生协作评审系统

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…