[C/C++入门][进制原理]27、计算机种的进制

news2025/1/10 1:58:24

各种信息进入计算机,都要转换成“0”“1”的二进制形式。

计算机 采用二进制的原因是:
  1. 物理上容易实现,可靠性高。(电子元件的通电和不通电就可以表示1和0,所以非常方便)
  2. 运算简单,通用性强。
  3. 便于表示和进行逻辑运算。

进位计数制的特点:

采用进位的方式进行计数;

使用位置表示法
例如:
123.45=1\times 10^{2} +2\times10^{1}+3\times10^{0}+4\times10^{-1}+5\times10^{-2}

         

2-1 计算机中常用的数字系统 进制
二进制
十进制
八进制
进制       二进制 十进制八进制十六进制
进位规则逢二进一逢十进一逢八进一逢十六进一
基数210816
基本符号0,10,1,2, …,90,1,2, …,70,1,2, …,9,A,B,C,D,E,F

十进制转换成二进制123.45转1111011.011100

计算机种如何表示呢? 

在C++中,你可以使用

进制表示

  1. 二进制 (0b0B 前缀): 从C++11开始,你可以使用前缀0b0B来表示二进制数。

    int num = 0b1011; // 等同于十进制中的11
  2. 八进制 (0 前缀): 八进制数可以通过在数字前添加0来表示。

    int num = 011; // 等同于十进制中的9

      3.十进制: 没有特殊前缀,默认就是十进制。

int num = 11; // 直接写数字

      4.十六进制 (0x0X 前缀): 十六进制数通过前缀0x0X来表示。 

int num = 0xB; // 等同于十进制中的11

 

输出进制转换

你可以使用std::cout结合std::dec, std::hex, std::octstd::bitset来输出不同进制的数字。

  1. 十进制 (std::dec):

    std::cout << std::dec << num; // 输出十进制形式
  2. 十六进制 (std::hex):

    std::cout << std::hex << num; // 输出十六进制形式
  3. 八进制 (std::oct):

    std::cout << std::oct << num; // 输出八进制形式
  4. 二进制 (std::bitset): std::bitset可以用来输出二进制字符串。

    std::bitset<32> bits(num);
    std::cout << bits << '\n'; // 输出二进制形式

输入进制转换

使用std::cin读取数字时,你可以指定进制,例如:

int num;
std::cin >> std::hex >> num; // 假设用户输入十六进制数字

各个进制:

#include <iostream>
#include <bitset>

int main() {
    int num = 27;

    std::cout << "Decimal: " << num << '\n';
    std::cout << "Binary:   " << std::bitset<32>(num) << '\n';
    std::cout << "Octal:    " << std::oct << num << '\n';
    std::cout << "Hexadecimal: " << std::hex << num << '\n';

    return 0;
}

其它的转化公式和原理

1. 从十进制转换为其他进制

转换公式:

假设我们要将一个十进制数d转换为r进制:

  • 将d除以r,得到商q和余数ri​。
  • 将商q再次除以r,直到商为0,每次都记录下余数。
  • 最终的r进制数是由余数从最后一个(即最先产生的余数)到第一个(即最后产生的余数)逆序排列组成的。

 

示例:

将十进制数13转换为二进制:

  1. 13/2=6 余数1
  2. 6/2=3 余数0
  3. 3/2=1 余数1
  4. 1/2=0 余数1

最终的二进制数是1101。

从其他进制转换为十进制

转换公式:

示例:

将二进制数1101转换为十进制:

3. 从非十进制直接转换为非十进制

转换公式:

先将非十进制数转换为十进制,然后再将十进制数转换为所需的非十进制。

示例:

将八进制数52转换为十六进制:

总结:

  1. 任意进制到十进制:使用上述的公式,将每个位的值乘以基数的幂次,然后求和。
  2. 十进制到任意进制:使用除法取余数的方法,将商重复进行除法直到为0,然后倒序排列余数。

这些原理和公式适用于任何进制的转换,只要知道基数和位数权重,就可以进行有效的转换

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

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

相关文章

【Git远程操作】理解分布式管理 | 创建远程仓库

目录 1.理解分布式管理 多人协作开发 2.创建远程仓库 2.1仓库名&路径 2.2初始化仓库&设置模板 1.理解分布式管理 目前我们学习的所有内容都是在本地来完成的。&#xff08;add /commit /版本撤销回退/分支管理&#xff09; Git是一个分布式 的版本控制系统。 分支…

最新开源的解析效果非常好的PDF解析工具MinerU (pdf2md pdf2json)

毫不夸张的说 PDF解析工具MinerU是照进RAG黑暗中的一道光——这是我对它的评价。我测过太多了文档解析工具&#xff01; 最近在做文档解析的工作。看了很多的开源的文档解析的工具&#xff0c;版面分析的工具&#xff0c;其中包括paddelpaddel这样30kstar的明星工具。但是效果都…

Android SurfaceView 组件介绍,挖洞原理详解

文章目录 组件介绍基本概念关键特性使用场景 SurfaceHolder介绍主要功能使用示例 SurfaceView 挖洞原理工作机制 使用SurfaceView展示图片示例创建一个自定义的 SurfaceView类在 Activity 中使用 ImageSurfaceView注意事项效果展示 组件介绍 在 Android 开发中&#xff0c;Sur…

【20】读感 - 架构整洁之道(二)

概述 继上一篇文章讲了前两章的读感&#xff0c;已经归纳总结的重点&#xff0c;这章会继续跟进的看一下&#xff0c;深挖架构整洁之道。 编程范式 编程范式从早期到至今&#xff0c;提过哪些编程范式&#xff0c;结构化编程&#xff0c;面向对象编程&#xff0c;函数式编程…

前端学习(二)之HTML

一、HTML文件结构 <!DOCTYPE html> <!-- 告诉浏览器&#xff0c;这是一个HTML文件 --><html lang"en"> <!-- 根元素&#xff08;起始点&#xff0c;最外层容器&#xff09; --><head> <!-- 文档的头部&#xff08;元信息&#xff…

spring ioc的原理

1、控制反转(IOC):对象的创建控制权由程序自身转移到外部&#xff08;容器&#xff09; 2、依赖注入(DI):所谓依赖注入&#xff0c;就是由IOC容器在运行期间&#xff0c;动态地将某种依赖关系注入到对象之中。 Spring 中的 IoC 的实现原理就是工厂模式加反射机制。 参考资料…

C++:类和对象 III(初始化列表、explicit、友元、匿名对象)

目录 初始化列表 初始化列表的特点 类型转换、explicit 隐式类型转换 explicit关键字 static成员 静态成员变量 静态成员函数 友元 友元函数 友元类 内部类 匿名对象 编译器优化 初始化列表 初始化列表就是类成员初始化的地方 函数有它声明和定义的地方&#x…

【人工智能】在未来智慧城市的建设及应用分析

作者主页: 知孤云出岫 目录 作者主页:案例分析&#xff1a;人工智能在未来智慧城市的建设及其影响和应用引言一、人工智能在智慧城市中的关键应用领域 案例分析&#xff1a;人工智能在未来智慧城市的建设及其影响和应用 引言 智慧城市是利用信息和通信技术&#xff08;ICT&am…

【开源 Mac 工具推荐之 2】洛雪音乐(lx-music-desktop):免费良心的音乐平台

旧版文章&#xff1a;【macOS免费软件推荐】第6期&#xff1a;洛雪音乐 Note&#xff1a;本文在旧版文章的基础上&#xff0c;新更新展示了一些洛雪音乐的新功能&#xff0c;并且描述更为详细。 简介 洛雪音乐&#xff08;GitHub 名&#xff1a;lx-music-desktop &#xff09;…

政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署Hallo :针对肖像图像动画的分层音频驱动视觉合成

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 零基础玩转各类开源AI项目 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 本文目标&#xff1a;在Ubuntu系统上部署Hallo&#x…

Linux——Shell脚本和Nginx反向代理服务器

1. Linux中的shell脚本【了解】 1.1 什么是shell Shell是一个用C语言编写的程序&#xff0c;它是用户使用Linux的桥梁 Shell 既是一种命令语言&#xff0c;有是一种程序设计语言 Shell是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问…

香橙派AIpro-携手华为-为AI赋能

文章目录 香橙派AIpro-携手华为-为AI赋能开箱和功能介绍开箱功能介绍 环境搭建镜像烧录进入系统 测试项目YOLOv5部署YOLOv5识别单张图片实时识别视频使用Ascend测试yolov5 产品评价 香橙派AIpro-携手华为-为AI赋能 今天新入手了一款香橙派AIPro&#xff0c;让我们一起跟着文章…

ELK日志分析系统部署文档

一、ELK说明 ELK是Elasticsearch&#xff08;ES&#xff09; Logstash Kibana 这三个开源工具组成&#xff0c;官方网站: The Elastic Search AI Platform — Drive real-time insights | Elastic 简单的ELK架构 ES: 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它…

适用于618/7xx芯片平台 AT开发 远程FOTA升级指南教程

简介 AT版本的远程升级主要是对AT固件版本进行升级&#xff0c;实际方式为通过合宙官方IOT平台升级或者使用自己搭建的服务器进行升级服务。 该文档教程流程适用于 618/716S/718P 芯片平台的Cat.1模块 合宙IOT平台配置 升级日志 —— 如何查看 升级日志 —— 响应码列表 响应…

算法之判断对称二叉树

94. 二叉树的中序遍历101. 对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;fa…

国产大模型速度测评,第一名竟然是它。。。

原文首发&#xff1a;国产大模型速度测评&#xff0c;第一名竟然是它。。。经过一段时间调研&#xff0c;我选择了一些国内比较知名的大模型进行速度测评&#xff0c;按照模型参数量及API调用价格&#xff0c;分为了三个档次&#xff0c;分别对应经济型、高性价比型、旗舰型。h…

【Django】网上蛋糕商城后台-商品管理

1.商品管理功能 当管理员点击商品管理时&#xff0c;发送服务器请求 path(admin/goods_list/, viewsAdmin.goods_list), # 处理商品列表请求 def goods_list(request):try:type request.GET["type"]except:type 0try:ym request.GET["ym"]except:ym …

【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列预测|附代码数据

全文链接&#xff1a;https://tecdat.cn/?p37019 分析师&#xff1a;Haopeng Li 随着我国股票市场规模的不断扩大、制度的不断完善&#xff0c;它在金融市场中也成为了越来越不可或缺的一部分。 【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列…

Haproy服务

目录 一.haproxy介绍 1.主要特点和功能 2.haproxy 调度算法 3.haproxy 与nginx 和lvs的区别 二.安装 haproxy 服务 1. yum安装 2.第三方rpm 安装 3.编译安装haproxy 三.配置文件详解 1.官方地址配置文件官方帮助文档 2.HAProxy 的配置文件haproxy.cfg由两大部分组成&…

【MQTT(3)】开发一个客户端,QT-Android安卓手机版本

手机版本更加方便 生成安卓库 参考了这个代码 在编译Mosquitto以支持安卓平台时&#xff0c;主要涉及到使用Android NDK&#xff08;Native Development Kit&#xff09;进行交叉编译。环境的准备参考之前的博客【QT开发&#xff08;17&#xff09;】2023-QT 5.14.2实现Andr…