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

各种信息进入计算机,都要转换成“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://xiahunao.cn/news/3249905.html

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

相关文章

ELK日志分析系统部署文档

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

Java 网络编程(TCP编程 和 UDP编程)

1. Java 网络编程&#xff08;TCP编程 和 UDP编程&#xff09; 文章目录 1. Java 网络编程&#xff08;TCP编程 和 UDP编程&#xff09;2. 网络编程的概念3. IP 地址3.1 IP地址相关的&#xff1a;域名与DNS 4. 端口号&#xff08;port&#xff09;5. 通信协议5.1 通信协议相关的…

如何免费用java c#实现手机在网状态查询

今天分享手机在网状态查询接口&#xff0c;该接口适用的场景非常广泛&#xff01;首先我们先讲下什么是手机在网状态&#xff1f;简单来说&#xff0c;就是你得手机号是否还在正常使用中&#xff0c;是否能够及时接收和回复信息&#xff0c;是否能够随时接听和拨打电话。如果你…

小白新手搭建个人网盘

小白新手搭建个人网盘 序云服务器ECS重置密码远程连接ECS实例 安装OwnCloud安装Apache服务PHP运行环境NAS挂载挂载验证操作体验 序 阿里云文件存储NAS&#xff08;Apsara File Storage NAS&#xff09;是一个可大规模共享访问&#xff0c;弹性扩展的分布式文件系统。本文主要是…

Python面试宝典第15题:岛屿数量

题目 在二维网格地图上&#xff0c;1 表示陆地&#xff0c;0 表示水域。如果相邻的陆地可以水平或垂直连接&#xff0c;则它们属于同一块岛屿。请进行编码&#xff0c;统计地图上的岛屿数量。比如&#xff1a;下面的二维网格地图&#xff0c;其岛屿数量为3。 基础知识 解决这类…

简约的悬浮动态特效404单页源HTML码

源码介绍 简约的悬浮动态特效404单页源HTML码,页面简约美观,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 完整源码 <!DOCTYPE html> <html><head><meta charset="utf-8&q…

高性能、安全、低碳绿色的趋势下,锐捷网络发布三擎云办公解决方案 3.0

桌面虚拟化作为云时代的主流和热门技术&#xff0c;已经取得了广泛应用。随着生成式 AI 爆炸式发展&#xff0c;CSDN 看到&#xff0c;人工智能正在引发计算、开发、交互三大范式的全面升级&#xff0c;技术开发或将迎来一次全新的科技变革周期&#xff0c;因此 VDI 云桌面随之…

组队学习——支持向量机

本次学习支持向量机部分数据如下所示 IDmasswidthheightcolor_scorefruit_namekind 其中ID&#xff1a;1-59是对应训练集和验证集的数据&#xff0c;60-67是对应测试集的数据&#xff0c;其中水果类别一共有四类包括apple、lemon、orange、mandarin。要求根据1-59的数据集的自…

Day16_集合与迭代器

Day16-集合 Day16 集合与迭代器1.1 集合的概念 集合继承图1.2 Collection接口1、添加元素2、删除元素3、查询与获取元素不过当我们实际使用都是使用的他的子类Arraylist&#xff01;&#xff01;&#xff01; 1.3 API演示1、演示添加2、演示删除3、演示查询与获取元素 2 Iterat…

[数据分析]脑图像处理工具

###############ATTENTION&#xff01;############### 非常需要注意软件适配的操作系统&#xff01;有些仅适用于Linux&#xff0c;可以点进各自软件手册查看详情。 需要自行查看支持的影像模态。 代码库和软件我没有加以区分。 不是专门预处理的博客&#xff01;&#xf…

HDU1005——Number Sequence,HDU1006——Tick and Tick,HDU1007——Quoit Design

目录 HDU1005——Number Sequence 题目描述 超时代码 代码思路 正确代码 代码思路 HDU1006——Tick and Tick 题目描述 运行代码 代码思路 HDU1007——Quoit Design 题目描述 运行代码 代码思路 HDU1005——Number Sequence 题目描述 Problem - 1005 超时代码…

QtC++ 设计模式(五)——状态模式

状态模式 序言理解源码 序言 设计模式只是一个抽象的设计模式方法&#xff0c;并不是一个固定使用的搭配&#xff0c;就算是普通switch语句&#xff0c;Map&#xff0c;乃至状态机都是状态模式的其中一种实现方法 状态模式看起来好像和策略模式差不多&#xff0c;主要是其的侧…

神经网络之多层感知机

目录 一、全连接层&#xff1a;二、单层感知机概念&#xff1a;三、多层感知机概念&#xff1a; 一、全连接层&#xff1a; 在神经网络中&#xff0c;全连接层就是每个神经元都与上一层的所有神经元相连接&#xff0c;即每个神经元都接收上一层所有神经元的输入&#xff0c;并…

分布式存储之 ceph 管理操作

一.资源池 Pool 管理 我们已经完成了 Ceph 集群的部署&#xff0c;但是我们如何向 Ceph 中存储数据呢&#xff1f;首先我们需要在 Ceph 中定义一个 Pool 资源池。Pool 是 Ceph 中存储 Object 对象抽象概念。我们可以将其理解为 Ceph 存储上划分的逻辑分区&#xff0c;Pool 由…

git使用-命令行+VS Code结合使用

一、Git常用命令 // 显示当分支的状态。它会列出已修改、已暂存和未跟踪的文件 git status// 列出本地仓库中所有的分支&#xff0c;其中会特殊显示当前所在分支 git branch// 在当前分支的基础上创建一个新的分支&#xff0c;并切换到这个新的分支上 git checkout -b 新分支…

Python创建Excel表和读取Excel表的基础操作

下载openpyxl第三方库 winr打开命令行输入cmd 这个如果不行可以试试其他方法&#xff0c;在运行Python代码的软件里也有直接下载的地方&#xff0c;可以上网搜索 创建Excel表 示例代码&#xff1a;最后要记得保存&#xff0c;可以加一句提示语句。 import openpyxl lst[100,…

文件IO(Ubuntu)

文件IO 目的 将数据写入文件中 与标准IO的区别 &#xff08;为什么要学习文件IO&#xff09; 标准IO只能操作普通文件和特殊的管道文件 文件IO能操作几乎所有的的文件 缓存区的目的 标准IO有缓存区 文件IO没有缓存区 根据右图描述 标准IO 文件IO buffer缓存区 有缓存区…

【SASS/SCSS(三)】样式的复用与动态计算(@mixin和@function)

目录 一、mixin 1、定义复用的样式代码&#xff0c;接受传参&#xff0c;搭配include使用。 位置传参 关键词传参 ...语法糖接受传入的任意参数 2、在mixin中使用content&#xff0c;获取外部对mixin的追加内容 二、function 三、字符串——值得注意的点 很多时候&#…

水域救援装备的详细简介_鼎跃安全

水域救援行动需要救援人员配备全面、专业的装备&#xff0c;以应对各种复杂的水域环境和救援任务。水域救援套装应运而生&#xff0c;它集合了水域救援所需的各类关键装备&#xff0c;为救援人员提供全方位的保护和辅助&#xff0c;确保数援行动的高效与安全。 水域救援头盔&am…

Visual Studio 2022美化

说明&#xff1a; VS版本&#xff1a;Visual Studio Community 2022 背景美化 【扩展】【管理扩展】搜索“ClaudiaIDE”&#xff0c;【下载】&#xff0c;安装完扩展要重启VS 在wallhaven下载壁纸图片作为文本编辑器区域背景图片 【工具】【选项】搜索ClaudiaIDE&#xff…