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

C++ 进制转化入门知识(1)

一、什么是进制

进制是一种用来表示数值的系统或方法,它是基于一个特定的基数来工作的。在我们常见的几种进制中,有:

1. **二进制(基数 2)**:
   二进制只用两个数字:0和1。这是计算机内部使用的数制系统,因为计算机的基本单元(比特)只有两种状态:0或1。

2. **十进制(基数 10)**:
   十进制是我们日常最常用的数制系统,它包括十个数字:0到9。

3. **八进制(基数 8)**:
   八进制使用八个数字:0到7。它在计算机科学中偶尔会被使用,因为它可以更简洁地表示二进制数。

4. **十六进制(基数 16)**:
   十六进制使用十六个符号来表示数值:0到9,然后是A到F(表示10到15)。它也常在计算机科学中用来更简洁地表示二进制数。

在不同进制间转换时,主要是通过不断地除以基数并取余数来完成的。例如,要将一个十进制数转换为二进制,可以将该数除以2,并记录余数,然后再将商除以2,并记录新的余数,如此继续,直到商为0。然后,将所有余数倒序排列,即得到二进制表示。

二、进制在生活中的例子

以下是几种不同进制在生活或科技中的实际应用例子:

1. **二进制(基数 2)**:
   - **计算机系统**: 计算机内部使用二进制来处理和存储数据。所有的程序和文件最终都是以二进制的形式存储。
   - **条形码和QR码**: 通过表示0和1的黑白条纹(或方块),可以编码信息。

2. **十进制(基数 10)**:
   - **日常计数和计算**: 我们在日常生活中进行的大多数计数和计算都是基于十进制的。
   - **货币系统**: 大多数的货币系统也都是基于十进制的,例如美元、欧元等。

3. **八进制(基数 8)**:
   - **早期计算机系统**: 在某些早期计算机系统中,八进制曾被用作一种方便的方式来表示二进制数,因为它可以更紧凑地表示二进制数。
   - **文件权限(Unix/Linux系统)**: 在Unix和Linux系统中,文件权限通常是用八进制数来表示的。

4. **十六进制(基数 16)**:
   - **计算机编程**: 在计算机编程中,十六进制常用于表示内存地址和二进制代码。
   - **颜色代码**: 在HTML和CSS中,颜色通常是用十六进制代码来表示的,例如 `#FFFFFF` 代表白色。

5. **六十进制/六十基数(Sumerians和Babylonians用过)**:
   - **时间单位**: 我们的时间单位(小时、分钟和秒)部分采用了六十进制,例如一小时有60分钟,一分钟有60秒。
   - **地理坐标系统**: 地理坐标系统(度、分、秒)也是基于60的。

6. **十二进制(基数 12)**:
   - **尺寸和长度**: 在某些文化中,十二进制用于计算长度和尺寸(例如一打为12个单位)。
   - **古代货币系统**: 有些古代货币系统是基于12的,例如英国的先前货币系统(先令)。

通过这些例子,我们可以看到不同的进制在我们的日常生活和科技中有广泛的应用。

三、在计算机里的进制

1.二进制

        C语言中,我们如果想表示一个二进制数,可以用0b作为前缀,然后跟上0和1组成的数字,我们来看看一段代码。

C语言:

#include<stdio.h>
int main(){int a=0b101;printf("%d\n",a);return 0;
}

这个是英雄师傅说的但是还是输出不出来二进制,至少再在dev c++是这么回事。 

2.八进制

思考题

一天上课老师问全班同学

C语言:

#include<stdio.h>
int main(){int a=0123;printf("%d\n",a);return 0;
}

小A不假思索的说应该输出123,很快教室里很多同学都同意小a的观点,而坐在后排的小B思考一段时间过后,却说不答案应该是83

请问应该输出应该是什么?

答案:

83,为什么呢因为在C语言中八进制的表示法是前缀1个0,然后跟上0-7的数字,本文中老师并没有说一定是10进制。

英雄师傅认为,八进制的表示法是前缀1个0然后跟上0-7的数字但是我却输出不出来,这是为什么呢?

我查资料后发现:

  • 在C语言中,我们使用了%o格式说明符来输出八进制数,而对于二进制输出,我们需要手动实现一个循环来显示每一位。
  • 在C++中,我们可以使用std::octstd::bitset来分别输出八进制和二进制数。
  • 在Java中,我们使用Integer.toOctalStringInteger.toBinaryString方法来输出八进制和二进制数。

       C语言:

#include <stdio.h>int main() {int num = 42;// 输出八进制数printf("Octal: %o\n", num);// 输出二进制数(C语言标准库不直接支持二进制输出,我们可以自定义一个函数来实现)for(int i = 31; i >= 0; i--) {printf("%d", (num >> i) & 1);}printf("\n");return 0;
}

C++:

#include <iostream>
#include <bitset>int main() {int num = 42;// 输出八进制数std::cout << "Octal: " << std::oct << num << std::dec << std::endl;// 输出二进制数std::cout << "Binary: " << std::bitset<32>(num) << std::endl;return 0;
}

JAVA:

public class Main {public static void main(String[] args) {int num = 42;// 输出八进制数System.out.println("Octal: " + Integer.toOctalString(num));// 输出二进制数System.out.println("Binary: " + Integer.toBinaryString(num));}
}

3.十六进制

同样看一下代码:

#include<stdio.h>
int main(){int a=0x123;printf("%d\n",a);return 0;
}

输出因该是什么?

输出的应该是291.

四、进制转化初步

### 1. x进制转10进制

任何x进制的数可以使用以下公式转换为十进制数:

\[
\text{{十进制结果}} = \sum \text{{(单个数字)} \times (\text{{基数}})^{\text{{位置}}}}
\]

其中“位置”是从右向左计数,从0开始。

#### 示例

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

\[
1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 = 8 + 4 + 0 + 1 = 13
\]

### 2. 10进制转x进制

将一个十进制数转换为x进制通常可以通过以下步骤完成:

1. 将十进制数除以x,记录余数。
2. 将商继续除以x,再次记录余数。
3. 重复步骤2,直到商为0。
4. 将记录的余数反向排列,得到x进制的表示。

#### 示例

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

1. \(13 \div 2 = 6\), 余数 = 1
2. \(6 \div 2 = 3\), 余数 = 0
3. \(3 \div 2 = 1\), 余数 = 1
4. \(1 \div 2 = 0\), 余数 = 1

所以二进制表示为:`1101`

这就是如何进行x进制到10进制和10进制到x进制的转换。

相关文章:

C++ 进制转化入门知识(1)

一、什么是进制 进制是一种用来表示数值的系统或方法&#xff0c;它是基于一个特定的基数来工作的。在我们常见的几种进制中&#xff0c;有&#xff1a; 1. **二进制&#xff08;基数 2&#xff09;**&#xff1a; 二进制只用两个数字&#xff1a;0和1。这是计算机内部使用…...

【React】React学习:从初级到高级(四)

React学习[四] 4 应急方案4.1 使用ref引用值4.1.1 给组件添加ref4.1.2 ref和state的不同之处4.1.3 何时使用ref 4.2 使用ref操作DOM4.2.1 获取指向节点的ref4.2.3 使用 ref 回调管理 ref 列表4.2.4 访问另一个组件的DOM节点4.2.5 用 flushSync 同步更新 state 4.3 使用Effect同…...

微信小程序登录问题(思路简略笔记)

配置问题 这是小程序登录问题&#xff0c;必要的两个配置。 流程思路 1. 微信小程序端&#xff0c;会返回一个code。 2. 查看需要返回给微信小程序端的数据。 3. 既然需要返回三个数据&#xff0c;先看openid如何拿到 WX-Login https://api.weixin.qq.com/sns/jscode2ses…...

Go 锁扩展

文章目录 TryLock统计 goroutine数量读写锁读锁写锁常见死锁情况写锁重入写锁中调用读锁循环依赖 TryLock 源码中自带的(我的go是 1.20版本)TryLock 会尝试获取锁&#xff0c;如果获取不到返回false&#xff0c;并不会进行休眠阻塞(和 Lock的主要区别) func (m *Mutex) TryLo…...

Docker的简介及安装

[shouce]http://shouce.jb51.net/docker_practice/栾一峰菜鸟教程参考文献 1 环境配置的难题 软件开发最大的麻烦事之一&#xff0c;就是环境配置。用户计算机的环境都不相同&#xff0c;你怎么知道自家的软件&#xff0c;能在那些机器跑起来&#xff1f; 用户必须保证两件事…...

安卓核心板的不同核心规格及架构介绍

安卓核心板是将核心功能封装的一块电子主板&#xff0c;集成芯片、存储器和功放器件等&#xff0c;并提供标准接口的芯片。 其特点&#xff1a; ● 能跑 Android 等操作系统 强大的功能及丰富的接口 支持 LCD/TP&#xff0c;Audio&#xff0c;Camera&#xff0c;Video&#…...

flume1.11.0安装部署

1、准备安装包apache-flume-1.11.0-bin.tar.gz&#xff1b; 上传&#xff1b; 2、安装flume-1.11.0&#xff1b; 解压&#xff1b; tar -zxvf apache-flume-1.11.0-bin.tar.gz -C /opt/server 进入conf目录&#xff0c;修改flume-env.sh&#xff0c;配置JAVA_HOME&#xff1b…...

通过wordpress 自定义主题的额外CSS删除指定区块

最近用wordpress建站&#xff0c;想要删除指定区块&#xff0c;发现相关的教程蛮少的&#xff0c;作为小白的我搜了相关教程&#xff0c;好像没找到&#xff0c;只能自己慢慢摸索了&#xff0c;看了很多&#xff0c;终于尝试实现了&#xff0c;特记录下&#xff0c;免得自己忘了…...

Rokid Jungle--Max pro

介绍和功能开发 YodaOS-Master操作系统&#xff1a;以交换计算为核心&#xff0c;实现单目SLAM空间交互&#xff0c;具有高精度、实时性和稳定性。发布UXR2.0SDK&#xff0c;为构建空间内容提供丰富的开发套件 多模态交互 算法原子化 多种开发工具协同 多生态支持 骁龙XR2…...

【LeetCode算法系列题解】第61~65题

CONTENTS LeetCode 61. 旋转链表&#xff08;中等&#xff09;LeetCode 62. 不同路径&#xff08;中等&#xff09;LeetCode 63. 不同路径 II&#xff08;中等&#xff09;LeetCode 64. 最小路径和&#xff08;中等&#xff09;LeetCode 65. 有效数字&#xff08;困难&#xff…...

MATLAB中fillmissing函数用法

目录 语法 说明 示例 包含 NaN 值的向量 由 NaN 值组成的矩阵 插入缺失数据 使用移动中位数方法 使用自定义填充方法 包含缺失端点的矩阵 包含多个数据类型的表 fillmissing函数的功能是填充缺失的条目。 语法 F fillmissing(A,constant,v) F fillmissing(A,meth…...

电脑同时连接有线和无线网络怎么设置网络的优先级

电脑同时连接有线和无线网络怎么设置网络的优先级&#xff1a; 我们知道在 笔记本电脑系统 中&#xff0c;可以通过有线或无线网络进行联网。如果电脑在有线网络和无线网络同时存在的情况&#xff0c;应该怎么设置有线网络优先连接呢?对此我们提供下面的方法可以让电脑在有Wi…...

el-form表单动态校验(场景: 输入框根据单选项来动态校验表单 没有选中的选项就不用校验)

el-form表单动态校验 el-form常规校验方式: // 结构部分 <el-form ref"form" :model"form" :rules"rules"><el-form-item label"活动名称: " prop"name" required><el-input v-model"form.name" /…...

Java 数据结构与算法应该如何学习?

学习数据结构是计算机科学和软件工程领域中的重要基础知识之一。掌握数据结构对于编写高效、可扩展和可维护的代码至关重要。 1、掌握基本概念 首先&#xff0c;你需要掌握数据结构的基本概念。了解不同类型的数据结构&#xff0c;如数组、链表、栈、队列、树、图等&#xff…...

力扣(LeetCode)算法_C++——有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; …...

制造企业如何优化物料控制?

导 读 ( 文/ 2127 ) 物料控制是指对制造过程中所涉及的物料流动和库存进行有效管理和控制的过程。它包括物料需求计划、供应商管理、物料采购、物料接收和入库、物料库存管理以及物料发放和使用等关键环节。通过精确的物料需求计划和库存管理&#xff0c;物料控制可以确保物料供…...

《Go语言在微服务中的崛起:为什么Go是下一个后端之星?》

&#x1f337;&#x1f341; 博主猫头虎&#x1f405;&#x1f43e; 带您进入 Golang 语言的新世界✨✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f…...

因为axios请求后端,接收不到token的问引出的问题

vue axios请求后端接受不到token的问题。 相关概念 什么是跨域&#xff1f; 跨域指的是在浏览器环境下&#xff0c;当发起请求的域&#xff08;或者网站&#xff09;与请求的资源所在的域之间存在协议、主机或端口中的任何一个条件不同的情况。换句话说&#xff0c;只要协议、…...

Stable Diffusion 免费升级 SDXL 1.0,哪些新特性值得关注?体验如何?5 分钟带你体验!

一、引言 7 月 26 日&#xff0c;Stability AI 发布了 SDXL 1.0&#xff0c;号称目前为止&#xff0c;最厉害的开放式图像生成大模型。 它到底有没有网上说的那么炸裂&#xff1f;真的已经实现了像 midjourney 一样 靠嘴出图 的功能吗&#xff1f;相对于之前的版本&#xff0c;…...

【广州华锐互动】煤矿设备AR远程巡检系统实现对井下作业的远程监控和管理

煤矿井下作业环境复杂&#xff0c;安全隐患较多。传统的巡检方式存在诸多弊端&#xff0c;如巡检人员难以全面了解井下情况&#xff0c;巡检效率低下&#xff0c;安全隐患难以及时发现和整改等。为了解决这些问题&#xff0c;提高煤矿安全生产水平&#xff0c;越来越多的企业开…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...