当前位置: 首页 > backend >正文

基于算法竞赛的c++编程(22)二进制,十进制,16进制

以下是关于二进制、十进制和十六进制在C++中的转换与操作方法:

十进制与其他进制的转换

C++标准库提供了将十进制转换为其他进制的方法:

#include <iostream>
#include <bitset>
#include <iomanip>int main() {int num = 255;// 十进制转二进制std::bitset<8> binary(num);std::cout << "Binary: " << binary << std::endl;// 十进制转十六进制std::cout << "Hexadecimal: 0x" << std::hex << num << std::endl;// 十进制转八进制std::cout << "Octal: 0" << std::oct << num << std::endl;return 0;
}

其他进制转十进制

使用std::stoi等函数可以处理不同进制字符串:

#include <string>int main() {// 二进制字符串转十进制std::string binary_str = "11111111";int decimal1 = std::stoi(binary_str, nullptr, 2);// 十六进制字符串转十进制std::string hex_str = "FF";int decimal2 = std::stoi(hex_str, nullptr, 16);return 0;
}

格式化输出控制

使用<iomanip>控制输出格式:

#include <iostream>
#include <iomanip>int main() {int num = 255;std::cout << std::setw(10) << std::setfill('0') << std::dec << num << std::endl;std::cout << std::showbase << std::hex << num << std::endl;return 0;
}

位操作

二进制位操作直接处理底层数据:

unsigned char a = 0b10101010;
unsigned char b = 0b01010101;// 与操作
unsigned char result_and = a & b;// 或操作
unsigned char result_or = a | b;// 异或操作
unsigned char result_xor = a ^ b;// 位移操作
unsigned char left_shift = a << 1;
unsigned char right_shift = a >> 1;

进制间转换算法

不使用标准库的转换算法示例:

#include <string>
#include <algorithm>std::string decimalToBinary(int n) {std::string binary;while(n > 0) {binary += (n % 2) + '0';n /= 2;}std::reverse(binary.begin(), binary.end());return binary;
}int binaryToDecimal(const std::string& binary) {int decimal = 0;for(char c : binary) {decimal = decimal * 2 + (c - '0');}return decimal;
}

http://www.xdnf.cn/news/12918.html

相关文章:

  • 面向对象之 继承中的成员访问特点
  • split方法
  • mybatis执行insert如何返回id
  • 开疆智能Ethernet/IP转Modbus网关连接斯巴拓压力传感器配置案例
  • LeetCode 高频 SQL 50 题(基础版)之 【高级字符串函数 / 正则表达式 / 子句】· 上
  • MCP(Model Context Protocol)与提示词撰写
  • unipp---HarmonyOS 应用开发实战
  • 并发和并行
  • 相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
  • 例说局部性原理给程序带来的提升
  • 2480: 2020年06月2级T1:计算矩阵边缘元素之和
  • 计数思想-众数
  • vmware 设置 dns
  • 存储的基本原理
  • 哈希map中不能将数组作为键的原因 leetcode49
  • 第二十八章 字符串与数字
  • 5G-A通感融合对监控监督体系的核心作用
  • 下一代设备健康管理解决方案:基于多源异构数据融合的智能运维架构
  • AD规则设置-铜皮规则,阻焊规则,实时DRC
  • 栈和队列的奇妙冒险:用栈实现队列
  • 6个月Python学习计划 Day 17 - 继承、多态与魔术方法
  • 快速上手Linux文本流编辑器sed
  • 智慧城市项目总体建设方案(Word700页+)
  • 基于深度强化学习的智能机器人导航系统
  • 黑马Javaweb Request和Response
  • 05.查询表
  • 【无人机】地面站crazyfile-cfclient免安装方法,Python3.10的整体环境配置打包
  • OCS2库及其在足式机器人上的应用
  • RK3568项目(七)--uboot系统之外设与PMIC详解
  • 真实案例分享,Augment Code和Cursor那个比较好用?