浅谈进制的转换

news2025/1/22 12:46:18

本文创作灵感来自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.coloradmin.cn/o/1446712.html

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

相关文章

Hive SQL编译成MapReduce任务的过程

一、 Hive 底层执行架构 1) Hive简介 Hive是Facebook实现的一个开源的数据仓库工具。将结构化的数据文件映射为数据库表,并提供HQL查询功能,将HQL语句转化为MapReduce任务运行 2) Hive本质:将 HQL 转化成 MapReduce 程…

Java 基于 SpringBoot+Vue 的社区医院系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

26. 可变参数和Collection集合工具类

可变参数与Collections 1. 可变参数1. 概述2. 格式3. 代码示例4. 注意事项 2. Collections集合工具类2.1 概述2.2 方法2.3 代码示例2.4 注意事项 1. 可变参数 1. 概述 可变参数(Variable Arguments)是指在参数列表中允许传入不定个数的参数。在许多编程…

多模态论文串讲·上【论文精读·46】只用 Transformer encoder 的一些方法viLT、clip、ALBEF、VLMO

目录 简单回顾一下 viLT 简单回顾CLIP 总结后提出改进 1 ALBEF 1.1 主体方法 1.1.1 模型结构 1.1.2 目标函数 1 ITCloss:align before fuse的align 2 ITM loss 3 MLM loss 1.1.3 动量蒸馏 1.2 预训练数据集 1.3 下游任务描述 1.4 实验结果 1 消融实验…

洛谷: [CSP-J 2023] 小苹果

题目描述 小 Y 的桌子上放着 n n n 个苹果从左到右排成一列,编号为从 1 1 1 到 n n n。 小苞是小 Y 的好朋友,每天她都会从中拿走一些苹果。 每天在拿的时候,小苞都是从左侧第 1 1 1 个苹果开始、每隔 2 2 2 个苹果拿走 1 1 1 个苹果…

【JAVA WEB】JavaScript--函数 作用域 对象

目录 函数 语法格式 示例 定义没有参数列表,也没有返回值的一个函数 定义一个有参数列表 ,有返回值的函数 关于参数个数 函数表达式 作用域 作用域链 对象 基本概念 创建对象 1.使用 字面量 创建对象 2.使用new Object()创建对象 3.使…

在huggingface中如何使用 google/flan-t5-large

参考: https://huggingface.co/google/flan-t5-large 1: from huggingface_hub.hf_api import HfFolder HfFolder.save_token(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) from transformers import pipeline from transformers import T5Tokenizer, T5F…

【selenium】

selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的。Selenium可以直接调用浏览器,它支持所有主流的浏览器。其本质是通过驱动浏览器,完成模拟浏览器操作,比如挑战,输入,点击等。 下载与打…

以谷歌浏览器为例 讲述 JavaScript 断点调试操作用法

今天来说个比较实用的东西 用浏览器开发者工具 对 javaScript代码进行调试 我们先创建一个index.html 编写代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&…

谷粒商城【成神路】-【6】——商品维护

目录 &#x1f9c2;1.发布商品 &#x1f953;2.获取分类关联品牌 &#x1f32d;3.获取分类下所有分组和关联属性 &#x1f37f;4.商品保存功能 &#x1f9c8;5.sup检索 &#x1f95e;6.sku检索 1.发布商品 获取用户系统等级~&#xff0c;前面生成了后端代码&#xff…

产品交付双轮驱动思维模型下的思考的研发工具

一、产品交付双轮驱动思维模型 之前读过这样双轮驱动思维模型&#xff0c;其思维模型如下图所示&#xff0c;双轮驱动思维模型是一个产品价值交付模型&#xff0c;总的理念是以“真北业务价值”为导向&#xff0c;以“产品快速交付”为动力&#xff0c;将“业务价值”与“产品…

01.数据结构篇-链表

1.找出两个链表的交点 160. Intersection of Two Linked Lists (Easy) Leetcode / 力扣 例如以下示例中 A 和 B 两个链表相交于 c1&#xff1a; A: a1 → a2↘c1 → c2 → c3↗ B: b1 → b2 → b3 但是不会出现以下相交的情况&#xff0c;因为每个节点只有一个…

HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-软件定时器

目录 一、软件定时器基本概念二、软件定时器运行机制三、软件定时器状态四、软件定时器模式五、软件定时器开发流程六、软件定时器使用说明七、软件定时器接口八、代码分析&#xff08;待续...&#xff09;坚持就有收获 一、软件定时器基本概念 软件定时器&#xff0c;是基于系…

【python量化交易】qteasy使用教程02 - 获取和管理金融数据

qteasy教程2 - 获取并管理金融数据 qteasy教程2 - 获取并管理金融数据开始前的准备工作获取基础数据以及价格数据下载交易日历和基础数据查看股票和指数的基础数据下载沪市股票数据从本地获取股价数据生成K线图 数据类型的查找回顾总结 qteasy教程2 - 获取并管理金融数据 qtea…

知识图谱 多模态学习 2024 最新综述

知识图谱遇见多模态学习&#xff1a;综述 论文题目&#xff1a;Knowledge Graphs Meet Multi-Modal Learning: A Comprehensive Survey 论文链接&#xff1a;http://arxiv.org/abs/2402.05391 项目地址&#xff1a;https://github.com/zjukg/KG-MM-Survey 备注&#xff1a;55…

C||1.水仙花数是指一个n位数,每一位数字的n次幂的和正好等于这个数本身。2.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。

1.水仙花数是指一个n位数&#xff0c;每一位数字的n次幂的和正好等于这个数本身。 比如&#xff1a;153 13 53 33。 要求打印出所有三位数的水仙花数。 #include <stdio.h> #include <math.h> int main() {int i,x,y,z;for(i100;i<1000;i){xi/100%10;yi/10%…

python-自动化篇-办公-批量新建文件夹并保存日志信息

文章目录 说明代码效果 说明 因为业务需要&#xff0c;每天都需要按当天的日期创建很多新文件夹。把这种重复又繁重的操作交给Python来做&#xff0c;一直是我的目标。先说下要求&#xff1a; 默认在桌面新建文件夹。文件夹命名方式&#xff0c;“月.日-1”&#xff0c;比如7…

同一个春晚 ,同一个淘宝

配图来自Canva可画 在全国一片喜庆的氛围中&#xff0c;龙年春晚如约播出&#xff0c;又一次为淘宝商家打开“财富之门”。 春晚作为春节不可或缺的一部分&#xff0c;它在传承传统文化的同时&#xff0c;也在引领当代网络潮流。龙年春晚开始前&#xff0c;不少网友“押题”&…

Stable Diffusion教程——stable diffusion基础原理详解与安装秋叶整合包进行出图测试

前言 在2022年&#xff0c;人工智能创作内容&#xff08;AIGC&#xff09;成为了AI领域的热门话题之一。在ChatGPT问世之前&#xff0c;AI绘画以其独特的创意和便捷的创作工具迅速走红&#xff0c;引起了广泛关注。随着一系列以Stable Diffusion、Midjourney、NovelAI等为代表…

车载诊断协议DoIP系列 —— OSI模型DoIP参考

车载诊断协议DoIP系列 —— OSI模型DoIP参考 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再…