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::oct
和std::bitset
来分别输出八进制和二进制数。 - 在Java中,我们使用
Integer.toOctalString
和Integer.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)
一、什么是进制 进制是一种用来表示数值的系统或方法,它是基于一个特定的基数来工作的。在我们常见的几种进制中,有: 1. **二进制(基数 2)**: 二进制只用两个数字: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同…...
微信小程序登录问题(思路简略笔记)
配置问题 这是小程序登录问题,必要的两个配置。 流程思路 1. 微信小程序端,会返回一个code。 2. 查看需要返回给微信小程序端的数据。 3. 既然需要返回三个数据,先看openid如何拿到 WX-Login https://api.weixin.qq.com/sns/jscode2ses…...
Go 锁扩展
文章目录 TryLock统计 goroutine数量读写锁读锁写锁常见死锁情况写锁重入写锁中调用读锁循环依赖 TryLock 源码中自带的(我的go是 1.20版本)TryLock 会尝试获取锁,如果获取不到返回false,并不会进行休眠阻塞(和 Lock的主要区别) func (m *Mutex) TryLo…...
Docker的简介及安装
[shouce]http://shouce.jb51.net/docker_practice/栾一峰菜鸟教程参考文献 1 环境配置的难题 软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,你怎么知道自家的软件,能在那些机器跑起来? 用户必须保证两件事…...
安卓核心板的不同核心规格及架构介绍
安卓核心板是将核心功能封装的一块电子主板,集成芯片、存储器和功放器件等,并提供标准接口的芯片。 其特点: ● 能跑 Android 等操作系统 强大的功能及丰富的接口 支持 LCD/TP,Audio,Camera,Video&#…...
flume1.11.0安装部署
1、准备安装包apache-flume-1.11.0-bin.tar.gz; 上传; 2、安装flume-1.11.0; 解压; tar -zxvf apache-flume-1.11.0-bin.tar.gz -C /opt/server 进入conf目录,修改flume-env.sh,配置JAVA_HOME;…...
通过wordpress 自定义主题的额外CSS删除指定区块
最近用wordpress建站,想要删除指定区块,发现相关的教程蛮少的,作为小白的我搜了相关教程,好像没找到,只能自己慢慢摸索了,看了很多,终于尝试实现了,特记录下,免得自己忘了…...
Rokid Jungle--Max pro
介绍和功能开发 YodaOS-Master操作系统:以交换计算为核心,实现单目SLAM空间交互,具有高精度、实时性和稳定性。发布UXR2.0SDK,为构建空间内容提供丰富的开发套件 多模态交互 算法原子化 多种开发工具协同 多生态支持 骁龙XR2…...
【LeetCode算法系列题解】第61~65题
CONTENTS LeetCode 61. 旋转链表(中等)LeetCode 62. 不同路径(中等)LeetCode 63. 不同路径 II(中等)LeetCode 64. 最小路径和(中等)LeetCode 65. 有效数字(困难ÿ…...
MATLAB中fillmissing函数用法
目录 语法 说明 示例 包含 NaN 值的向量 由 NaN 值组成的矩阵 插入缺失数据 使用移动中位数方法 使用自定义填充方法 包含缺失端点的矩阵 包含多个数据类型的表 fillmissing函数的功能是填充缺失的条目。 语法 F fillmissing(A,constant,v) F fillmissing(A,meth…...
电脑同时连接有线和无线网络怎么设置网络的优先级
电脑同时连接有线和无线网络怎么设置网络的优先级: 我们知道在 笔记本电脑系统 中,可以通过有线或无线网络进行联网。如果电脑在有线网络和无线网络同时存在的情况,应该怎么设置有线网络优先连接呢?对此我们提供下面的方法可以让电脑在有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、掌握基本概念 首先,你需要掌握数据结构的基本概念。了解不同类型的数据结构,如数组、链表、栈、队列、树、图等ÿ…...
力扣(LeetCode)算法_C++——有效的数独
请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) …...
制造企业如何优化物料控制?
导 读 ( 文/ 2127 ) 物料控制是指对制造过程中所涉及的物料流动和库存进行有效管理和控制的过程。它包括物料需求计划、供应商管理、物料采购、物料接收和入库、物料库存管理以及物料发放和使用等关键环节。通过精确的物料需求计划和库存管理,物料控制可以确保物料供…...
《Go语言在微服务中的崛起:为什么Go是下一个后端之星?》
🌷🍁 博主猫头虎🐅🐾 带您进入 Golang 语言的新世界✨✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文并茂…...
因为axios请求后端,接收不到token的问引出的问题
vue axios请求后端接受不到token的问题。 相关概念 什么是跨域? 跨域指的是在浏览器环境下,当发起请求的域(或者网站)与请求的资源所在的域之间存在协议、主机或端口中的任何一个条件不同的情况。换句话说,只要协议、…...
Stable Diffusion 免费升级 SDXL 1.0,哪些新特性值得关注?体验如何?5 分钟带你体验!
一、引言 7 月 26 日,Stability AI 发布了 SDXL 1.0,号称目前为止,最厉害的开放式图像生成大模型。 它到底有没有网上说的那么炸裂?真的已经实现了像 midjourney 一样 靠嘴出图 的功能吗?相对于之前的版本,…...
【广州华锐互动】煤矿设备AR远程巡检系统实现对井下作业的远程监控和管理
煤矿井下作业环境复杂,安全隐患较多。传统的巡检方式存在诸多弊端,如巡检人员难以全面了解井下情况,巡检效率低下,安全隐患难以及时发现和整改等。为了解决这些问题,提高煤矿安全生产水平,越来越多的企业开…...
C语言与Java语言传输数据 需要转位
在Java语言中,可以通过将整数反转并修改字节顺序来实现低位转高位的转换。下面是一个示例代码,可以将一个整数从低位转高位: public static int toHH(int n) {byte[] bytes ByteBuffer.allocate(4).putInt(n).array();for (int i 0; i <…...
Framework开发——系统默认语言修改
Android 系统原版默认的语言为英文,但是对于中国大陆 Android 产品厂商来说,我们定制系统可能需要用户一开机就是简体中文。所以把 Android 系统出厂设置为简体中文对于 Android 系统产品化非常重要,我们可以通过修改系统属性来达到默认语言的作用。本文主要是在 Android 11…...
浅谈原型链
一.在掌握原型链之前首先要了解这三点 1.每个函数都有prototype这个属性我们称为原型对象 2.每个对象都有__proto__这个属性 3.对象的__proto__可以访问原型对象上的方法和变量,如果访问不了,就会向上进行查找,直到找不到为止,会出现报错的情况l。 二.例子 1.代码: let arr …...
合宙Air724UG LuatOS-Air LVGL API控件-截屏(Screenshots)
截屏(Screenshots) 分 享导出pdf 截屏功能,core版本号要>3211 示例代码 -- 创建图片控件img lvgl.img_create(lvgl.scr_act(), nil)-- 设置图片显示的图像lvgl.img_set_src(img, "/lua/test.png")-- 图片居中lvgl.obj_align(…...
【系统设计系列】 负载均衡和反向代理
系统设计系列初衷 System Design Primer: 英文文档 GitHub - donnemartin/system-design-primer: Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards. 中文版: https://github.com/donnemart…...
Halcon实现3维点云平面拟合
Halcon实现3维点云平面拟合 function main()WindowHandle open_window()ObjectModel3D load_3D_model("1.om3")ObjectModel3DSelected remove_noise(ObjectModel3D)[X, Y, Z] extract_coordinates(ObjectModel3DSelected)[NX, NY, NZ, C] fit_plane(X, Y, Z)vi…...
安全学习DAY23_CookieSessionToken
文章目录 Cookie和Session的区别Token的作用 Cookie和Session的区别 Cookie和Session都是用来在Web应用程序中跟踪用户状态的机制 1、存储位置不同: Cookie是存储在客户端(浏览器)上的,而Session是存储在服务器端的。 2、安全…...
C++ map clear内存泄漏问题
map值存的是指针 map自带的clear()函数会清空map里存储的所有内容,但如果map值存储的是指针,则里面的值不会被清空,会造成内存泄漏,所以值为指针的map必须用迭代器清空。 使用erase迭代删除 迭代器删除值为指针的map,…...
【鲁棒电力系统状态估计】基于投影统计的电力系统状态估计的鲁棒GM估计器(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
怎么判断一个ip地址是否正确
在网络通信和计算机领域中,IP地址(Internet Protocol Address)是一个关键的概念。但是,很多人对于如何判断一个IP地址是否正确感到困惑。本文将深入探讨这个问题,并提供一些实用的方法来验证IP地址的正确性。 IP地址是…...
免费手机网站app/网络推广员是什么工作
点击上方“Python大本营”,选择“置顶公众号” Python大本营 IT人的职业提升平台Python经过了几十年的努力才得到了编程社区的赏识。自2010年以来,Python得到了蓬勃发展,并且在2019至2020年更是经常霸占每月PYPL编程榜榜首位置!但…...
做专业慢摇的网站/网页免费制作网站
前言 在前面一篇文章中 vsftpd 的调试环境的搭建, 我们搭建了一个 vsftpd 的一个调试环境 既然搭建了一个调试环境, 目的就是为了能够调试 vsftpd, 如果 不去调试, 那岂非毫无意义 这里 就拿相对比较简单的登录流程 来进行开刀 呵呵 虽然只是简单的登录流程, 但是 代码的…...
vs做网站需要的插件/病毒式营销的案例
Snap7是一个用于处理S7以太网协议,与西门子S7系列PLC通讯的开源通讯组件。支持与S7-200、S7-200 Smart、S7-300、S7-400、S7-1200以及S7-1500的以太网通信。网络上有一个基于Snap7开发的Python开源库python-snap7,下面就具体介绍利用Python实现与S7-1200…...
阿里巴巴网站域名建设/深圳网络推广
1. 需要使用svnant,从SVN中获取源码 需要使用的扩展包:svnant-1.3.1.zip里所有的jar 下载地址:http://subclipse.tigris.org/files/documents/906/49042/svnant-1.3.1.zip build.xml中的写法 <!--定义SVN地址--><property name"…...
自己如何建设个网站/百度账号申诉中心
给新手点 spark。我尝试使用spark在我的 dataframe上执行一些pandas操作,但奇怪的是它比纯python慢(即在python中使用pandas包)。我是这样做的: 1) train_df.filter(train_df.gender -unknown-).count() 恢复结果大约…...
作一个网站要多少钱/外贸seo网站建设
大片大片的珊瑚正在死亡,请保护我们的地球。 昨天还欣欣向荣 转眼就... 希望明天不会是 转载于:https://www.cnblogs.com/junqilian/p/3883893.html...