浅谈进制的转换

本文创作灵感来自CSDN@咸鱼WCY 的

咸鱼小白学嵌入式之C语言(2.进制)

博主更完就没更了,决定书接上回(喜


进制是个啥

要理解进制,首先哈,咱得知道不同进制的含义

说到底,各个进制其实有点像在用不同姿势表示一个数,也就是一个数的不同表示方式

再详细一些,就是逢几进1

 

比如十进制,就是逢十进一

那我们数数时,就是这样的:

1  2  3  4  5  6  7  8  9

可是这时候,再数就≥10了,怎么办呢?进一就好了,变成10。也就是十位+1,个位清零。

接下来,就可以再次从个位加起,再进十位,十位到9了还要加一,就会诞生百位……以此类推

那这种思维我们依葫芦画瓢到二进制,又是怎么样呢?

二进制就是逢二进一,所以每当数≥2时,就要进位。

我们从一开始吧。

1  ?

下一个,1+1≥2了,那就要进一,十位+1,个位清零,得什么?

对了,10

但是此时我们一般不读这个为“十”,一般念“一零”,因为此处的10表示的和十进制的“十”就不一样了,它其实表示十进制的“二”

 

其它进制的话这样表示也是很好理解的,要注意的是16进制。

16进制是逢16进一,那就得表示出10 11 12 13 14 15啊!

于是,就有了ABCDEF。。。

不得不说,简单粗暴我喜欢

进制写法

一般来说,我们这样表示不同进制数

二进制:()B

八进制:()O

十进制:()D

十六进制:()H

填数即可

后面的字母是对应进制的缩写,不用管

比如二进制11,就可以写作11B

 

也有更简单的方法,(数)进制数  这样写

比如二进制11写作  (11)2

(一般进制数写得小一些,在括号右下角)

 

在计算机里,常用的十六进制也可能写作数加上前缀 0x (注意是阿拉伯数字0,不是o!)

 

进制的转换

就像美元和人民币一样,总得流通吧

所以,各个进制之间也总要转换的啊

依旧以十进制为标准,易得

 

c757e9ce3e414ea289adf5fbbef77d41.jpg

这样就很好理解了

 

可是,进制转换总不能要转换就从1开始写吧,要是要求转换10086D为二进制,那不得写死了??!

所以,从本质出发,我们需要一种计算方式来转换进制

这件事嘛,还得分两段说

十进制转n进制

这个还是比较好理解,也是比较常用的,用短除法。

短除法是十进制转换经典方法,原理如下,不想看可以跳下一个标题

短除法转换进制的原理

这个短除法还是基于二进制的原理实现的

二进制是逢二进一嘛,

短除法把十进制数除以二,相当于二进制进了一位,余数就是进位后的数,以此类推,最后除的余数必定是最高位的二进制数,所以就倒序写。

说到底就是十进制数除以2,相当于二进制数进了一位

(其实我也是一知半解,不知怎么解释)

短除法

咱假设要转换的数是20D

 

b52882ca77df44e2a02ba2756b36fed4.jpg 

 从下往上读余数,是10100,所以20D

=10100B

毫无技术含量可言 :D

(也不知是哪个人二进制题10题只对6题)

n进制转十进制

这个是比较重要的一个方法,相比短除法也难一些

理解这个之前,要了解一个重要的知识点。

基数和位权都是啥?

先不谈n进制,先看十进制

一个数,假设是456,那么我们就可以知道这里是有4个100,5个10,6个1

这应该是幼儿园知识了哈,我们略过

那么100 10 1 有什么关系呢?

前提条件,在10进制,所以我们需要探究它和10有什么关系。

不难发现,100=10^2,10=10^1,1=10^0,由个位开始指数从0开始依次连续加一

那再带入式子,得到

456D =4×10^2 + 5×10^1 + 6×10^0

这就是大名鼎鼎的——位权展开式

此处以一个字母式为例

(ABC)n=A×n^2+B×n^1+C×n^0

A,B,C分别就是基数,也就是基本的数,任何花样都以此进行

而n的若干次方就是对应的位权,平时不这么写的时候,可以理解为百位十位个位它们的区别

 

那么再次看看其他进制吧~

举例10100B,等于什么?

对,10100B=1×2^4 + 0×2^3 + 1×2^2 + 0×2^1 + 0×2^0

也可以直接化简为10100B=1×2^4 + 1×2^2

位权展开式可以干啥?

那现在知道了位权展开式,怎么用来转换进制呢?

刚刚我们看的十进制和二进制的位权展开式,有什么特点?

可以发现在展开式中底数都是对应的进制数

这个发现就能很快推导出来,这个很大可能和进制有关系

10100B=1×2^4 + 1×2^2

简单计算出来,等于16+4=20

所以,10100B=20D

其他进制也可以这样做

简单的,可以自行理解

 

更加高级一点的转换

带小数的十进制转换n进制

这个比较麻烦一点,我们以13.625D转换二进制为例

1.拆离整数部分和小数部分

这里拆开得到13和0.625

2.转换整数部分

13的话可以看前面,得1101B

3.转换小数部分

重点来了!

怎么转换小数部分嘞

其实之前我经常直接把小数点移位,转换完再移回去,可是经常错,所以这样不对

因为转换完之后的位数又和原来可能不一样,转换完再移位很显然不对

所以要用一种方法

小数部分是0.625嘛,我们需要把它不断乘以需要转换到的进制数(此处是2),取整数部分提出来加入结果小数部分,再取小数部分继续乘,一直做到小数部分为0或者精度够了,如下

整数部分:1101B

 

0.625×2=1.25          1101.1B

0.25×2=0.5              1101.10B

0.5×2=1                   1101.101B

 

所以得出,13.625D=1101.101B

如果觉得很难,没关系,之前赛前培训也被这个整得快疯了(苦笑)主要是各种小数又是整数,乘又除的啊啊啊啊啊

 

带小数的n进制转十进制

这个其实更加简单一些,位权展开式照抄就行了啊

举例,1101.101B转换为十进制

这里需要连贯性,所以整数小数一起说吧

已知1101B=1×2^3 + 1×2^2 + 0×2^1+1×2^0=13

那么……小数部分会不会也可以改写成位权展开式呢?

当然可以!

我们继续往下,0-1=-1,所以,小数部分就是负数的次方

0.101等于 1×2^-1 + 0×2^-2 + 1×2^-3

计算一下就得0.5+0+0.125=0.625

补在整数部分13后面,得13.625

所以1101.101B=13.625D

这个比小数十进制转n进制简单点吧

hhh我个人感觉是


以上就是各个进制转换的知识了,作为无聊的木子2024年的第一篇文章,可能知识点过于简单,文笔也不尽生疏,接下来木子会继续努力,更新更优质的文章

 

2024.02.13 在手机上敲打了一上午

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

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

相关文章

学生公寓|基于Springboot的学生公寓管理系统设计与实现(源码+数据库+文档)

学生公寓管理系统目录 目录 基于Springboot的学生公寓管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、宿舍列表 2、宿舍公告信息管理 3、宿舍公告类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…

学生成绩管理系统|基于Springboot的学生成绩管理系统设计与实现(源码+数据库+文档)

学生成绩管理系统目录 目录 基于Springboot的学生成绩管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能模块 2、学生功能模块 3、教师功能模块 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源…

AI引领低代码革命:未来应用开发的新主流

距离ChatGPT发布已经过去快一年时间。 在这一年里,以ChatGPT为代表的自然语言处理领域的重大进步,为我们的对话系统和语言交流提供了更加智能和自然的体验。随着ChatGPT的应用不断扩大,人们开始认识到人工智能(AI)技术…

elasticsearch增删改查

一、数据类型 1、字符串类型 (1)text (2)keyword 2、数值类型 (1)long、integer、short、byte、float、double 3、日期类型 (1)date 4、布尔类型 (1&#xff0…

【AI绘图】初见·小白入门stable diffusion的初体验

首先,感谢赛博菩萨秋葉aaaki的整合包 上手 stable diffusion还是挺好上手的(如果使用整合包的话),看看界面功能介绍简单写几个prompt就能生成图片了。 尝试 我在网上找了一张赛博朋克边缘行者Lucy的cos图,可能会侵…

开发自定义标记应用程序

开发自定义标记应用程序 问题陈述 Larry Williams 是ABC Inc.公司的CEO,他希望公司能够拥有一个交互式网站以向访问网站的用户表示问候并显示当前时间。他还希望最终用户能够指定主页的背景颜色。您是公司的网站管理员。Larry要您修改网站的主页,以便向最终用户显示自定义问…

鸿蒙小案例-你画我猜

鸿蒙小案例-你画我猜 1.准备组件(组件布局) 2.实现跟随鼠标画笔画出图案功能 3.实现复制上面的画笔的图案功能 4.其他小功能1.组件的准备 画布的组件官方给的API是Canvas,需要传递一个参数CanvasRenderingContext2D 直接搜索API 使用官方案例 private settings: …

【蓝桥杯Python】试题 算法训练 藏匿的刺客

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 强大的kAc建立了强大的帝国,但人民深受其学霸及23文化的压迫,于是勇敢的鹏决心反抗。   kAc帝国防守…

书生谱语-基于 InternLM 和 LangChain 搭建知识库

大语言模型与外挂知识库(RAG)的优缺点 RAG方案构建与优化 作业 在创建web_demo时,需要根据教程将服务器端口映射到本地端口,另外需要将链接的demo从服务器中复制出来,不要直接从服务器打开demo页面,不然会…

分布式事务详解

概述 随着互联网的发展,软件系统由原来的单体应用转变为分布式应用。分布式系统把一个单体应用拆分为可独立部署的多个服务,因此需要服务与服务之间远程协作才能完成事务操作。这种分布式系统下不同服务之间通过远程协作完成的事务称之为分布式事务&…

JavaScript中有哪些不同的数据类型

在 JavaScript 中,数据类型是一种用来表示数据的分类,它决定了我们可以对这个数据类型执行哪些操作。在 JavaScript 中有以下几种不同的数据类型: 基本数据类型 字符串 (String):表示一组字符,可以使用引号&#xff08…

ElasticSearch级查询Query DSL上

目录 ES高级查询Query DSL match_all 返回源数据_source 返回指定条数size 分页查询from&size 指定字段排序sort 术语级别查询 Term query术语查询 Terms Query多术语查询 exists query ids query range query范围查询 prefix query前缀查询 wildcard query通…

CVE-2022-25487 漏洞复现

漏洞描述:Atom CMS 2.0版本存在远程代码执行漏洞,该漏洞源于/admin/uploads.php 未能正确过滤构造代码段的特殊元素。攻击者可利用该漏洞导致任意代码执行。 其实这就是一个文件上传漏洞罢了。。。。 打开之后,/home路由是个空白 信息搜集&…

controller-manager学习三部曲之三:deployment的controller启动分析

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《controller-manager学习三部曲》完整链接 通过脚本文件寻找程序入口源码学习deployment的controller启动分析 本篇概览 本文是《controller-manager学习三…

深入了解JavaScript混淆工具:jsjiami.v6

JavaScript混淆工具在前端开发中发挥着重要的作用,帮助开发者保护源代码,减少代码被轻易破解的风险。其中,jsjiami.v6 是一款备受开发者关注的混淆工具之一。本文将深入介绍jsjiami.v6的基本原理和使用方法,并通过案例代码演示其效…

普通男孩的新年创作纪念日

前言 首先在新春佳节,小编在这里祝各位大佬。萌新友友们新年好,希望每一个烟火般的你在新的一年里 offer 多多,薪资多多 ,龙行龘龘 🐉 🐉 🐉 🐉,前程朤朤 ❤️ ❤️ ❤…

【C++】内存详解(堆,栈,静态区)

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

【python】网络爬虫与信息提取--Beautiful Soup库

Beautiful Soup网站:https://www.crummy.com/software/BeautifulSoup/ 作用:它能够对HTML.xml格式进行解析,并且提取其中的相关信息。它可以对我们提供的任何格式进行相关的爬取,并且可以进行树形解析。 使用原理:它能…

Linux第47步_安装支持linux的第三方库和mkimage工具

安装支持linux的第三方库和mkimage工具,做好移植前的准备工作。 编译linux内核之前,需要先在 ubuntu上安装“lzop库”和“libssl-dev库”,否则内核编译会失败。 mkimage工具会在zImage镜像文件的前面添加0x40个字节的头部信息,就可以得到uI…

【Pyhton4Delpi】学习笔记(二)安装验证篇

D12环境下安装P4D。 一、下载 Python4Delphi(下称P4D): 下载地址:https://github.com/pyscripter/python4delphi 下载或者克隆P4D到指定的目录,例如:MDS_New,目录结构如下,P4D就是克隆下来的…