嵌入式-数据进制之间的转换

news2024/9/25 15:29:23

目录

一.简介

1.1十进制

1.2二进制

1.3八进制

1.4十六进制

二.进制转换

2.1二进制-十进制转换

2.2八进制-十进制转换

2.3十六进制-十进制转换

2.4十进制-二进制转换

2.5十进制-八进制转换

2.6十进制-十六进制转换

2.7小数部分转换


一.简介

    被传入到计算机的数据要转换成0,1的二进制数据才能被计算机识别。为了方便存储,我们将数据以进制的形式存储。

    进制也就是进位计数制,是人们规定的一种带进位的计数方法

    对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。例如十进制是逢十进一,二进制是逢二进一,十六进制是逢十六进一。

    常见的数据进制包括以下几种:

  1. 十进制。十进制数是指0、1、2、3、4、5、6、7、8、9共十个数字,每逢十进一。
  2. 二进制。二进制数是指0和1两个数码,每逢二进一。
  3. 八进制。八进制数是指0、1、2、3、4、5、6、7共八个数字,每逢八进一。
  4. 十六进制。十六进制数是指0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共十六个数字,每逢十六进一。

1.1十进制

    十进制(Decimal System)是一种计数方法,即满十进一,计数单位是101。

    十进制计数法是日常使用最多的计数方法,每相邻的两个计数单位之间的进率都为十,即10、100、1000、10000、100000、……,其计数单位为1、10、10^2、10^3、10^4、……,这些计数单位之间的进率都是10,即10^1=10、10^2=10×10=10^3、……、10^n=10×……×10=10^(n+1),以此类推。

    十进制计数法最早是由亚里士多德发现的,起因可能是因为人类有十根手指,所以每相邻的两个计数单位之间的进率都是十,这跟人类算数采用十进制可能有一定关系

1.2二进制

    二进制是由德国数理哲学大师莱布尼茨在1679年发明的,他在看了中国的《周易》之后受到启发发明了二进制,这也是今天电子计算机技术的基础。

    二进制的基数为2,每个数码只能是0和1。在二进制中,数码的进位规则是“逢二进一”,即每位二进制数的权值是2的整数次幂。

    二进制在数学和数字电路中应用非常广泛,现代的计算机和依赖计算机的设备里都使用二进制。

    二进制的计算案例:

    0011(二进制)+ 0101(二进制)= 1000(二进制)

    计算过程:

    0+0=0

    1+1=0(进位)

    1+0=1

    所以,0011+0101=1000

1.3八进制

    八进制是一种以8为基数的计数法,采用0、1、2、3、4、5、6、7八个数字,逢八进1。

    八进制在计算机领域被广泛运用,因为与二进制转换简便,同时又避免了二进制的基数大带来的许多麻烦。

    八进制数的表示方法通常以0开始,例如:0O、01、02、03、04、05、06、07等。

1.4十六进制

    十六进制是用16作为基数的计数系统 。它使用数字0-9和字母A-F(或其大写A-F)表示0到15。例如,十六进制的A表示十进制的10,B表示十进制的11,C表示十进制的12,以此类推。十六进制数通常以0x或0X开头,例如,0x1表示十六进制的1,0x1A表示十六进制的26(1×16+10×1)

二.进制转换

2.1二进制-十进制转换

    二进制向十进制转换的方法是按照二进制数的每一位乘以对应的权值(2的幂次方),然后相加得到十进制数。例如,二进制数1101转换为十进制数的计算过程为:

    1×2^3+1×2^2+0×2^1+1×2^0=8+4+0+1=13

    因此,二进制数1101转换为十进制数为13。

2.2八进制-十进制转换

    八进制转换为十进制的方法是按照八进制数的每一位乘以对应的权值(8的幂次方),然后相加得到十进制数。例如,八进制数7654转换为十进制数的计算过程为:

    7×8^3+6×8^2+5×8^1+4×8^0=4000+384+40+4=4428

    因此,八进制数7654转换为十进制数为4428。

2.3十六进制-十进制转换

    十六进制转换为十进制的方法是按照十六进制数的每一位乘以对应的权值(16的幂次方),然后相加得到十进制数。例如,十六进制数3E转换为十进制数的计算过程为:

    3×16^1+14×16^0=48+14=62

    因此,十六进制数3E转换为十进制数为62。

2.4十进制-二进制转换

    十进制转换为二进制的方法是将每一个十进制数除以2,然后将余数按从低位到高位的顺序排列,得到的数就是对应的二进制数。例如,将十进制数23转换为二进制数的过程如下:

    23 ÷ 2=11 余 1

    11 ÷ 2=5 余 1

    5 ÷ 2=2 余 1

    2 ÷ 2=1 余 0

    1 ÷ 2=0 余 1

    从下往上读取余数,得到23的二进制表示为10111。因此,十进制数23转换为二进制数为10111。

2.5十进制-八进制转换

    将一个十进制数转换为八进制同样使用除法法则,以下是一种转换方法:

    1. 选取需要转换的十进制数。

    2. 用该数除以8,得到商和余数。

    3. 将余数作为结果的最后一位。

    4. 将商作为新的十进制数,重复步骤2和3,直到商为0。

    5. 将余数按照从最后一位到第一位的顺序排列,得到转换后的八进制数。

    举例说明:

    将十进制数29转换为八进制:

    29 ÷ 8 = 3 ... 5

    3 ÷ 8 = 0 ... 3

    所以,29的八进制表示为35。

2.6十进制-十六进制转换

    下面是将十进制转换为十六进制的步骤:

    1. 将给定的十进制数除以16,得到商和余数。
    2. 如果商大于0,将商继续除以16,重复这个过程,直到商为0。
    3. 用余数来代表十六进制的数位。对于余数大于9的情况,使用A-F的字母来代表数字10-15。
    4. 将得到的余数按照从右到左的顺序排列起来,得到的就是对应的十六进制数。

    举个例子,将十进制数123转换为十六进制数:

    1. 首先,将123除以16,得到商和余数。123÷16 = 7 余 11,也就是7B。
    2. 商为7,继续除以16。7÷16 = 0 余 7,也就是07。
    3. 将得到的两个余数按照从右到左的顺序排列起来,得到最终的结果为07B。

    因此,十进制数123转换为十六进制数为07B。

2.7小数部分转换

    进制间小数部分的转换是通过不断乘以目标进制的方式进行的。

    以将十进制小数转换为二进制小数为例,首先将十进制小数乘以2,得到的整数部分即为二进制小数的第一位数。将余下的小数部分再次乘以2,得到的整数部分即为二进制小数的第二位数。依此类推,直到小数部分为0或者达到所需的精度为止。

    例如,将十进制小数0.625转换为二进制小数,过程如下:

    0.625 * 2 = 1.25,整数部分为1,余下的小数部分为0.25
    0.25 * 2 = 0.5,整数部分为0,余下的小数部分为0.5
    0.5 * 2 = 1.0,整数部分为1,小数部分为0,转换结束。

    因此,0.625的二进制表示为0.101。

    同样地,将二进制小数转换为其他进制的小数时,也是通过类似的方式进行的。不断乘以目标进制,每次得到的整数部分就是目标进制下的小数位数。

    需要注意的是,在进行进制转换时,可能存在精度丢失的问题,因为不是所有的小数都能用某个进制的有限位数精确表示。

    一个经典的进制转换中的精度丢失案例是十进制转换为二进制。在进行十进制到二进制的转换时,可能会遇到精度丢失的问题。

    举个例子,假设我们有一个十进制数值1.1,想要将其转换为二进制。首先我们将1.1乘以2,得到2.2。整数部分为2,所以我们将其记录下来。然后将小数部分0.2再乘以2,得到0.4。同样地,我们记录下整数部分0。再将小数部分0.4乘以2,得到0.8,同样记录下整数部分0。这样继续下去,直到小数部分为0或者达到我们设定的精度。

    然而,1.1在二进制中并不是一个有限的小数,它是一个循环小数,即1.1对应的二进制表示是无限循环的。在上述的转换过程中,由于计算机的存储精度限制,只能记录有限位数的二进制表示。因此,它最终会截断循环部分,导致精度丢失。

    所以,当要进行进制转换时,特别是涉及到无限循环小数的情况,可能会出现精度丢失的问题。

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

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

相关文章

在macOS使用VMware踩过的坑

目录 MAC提示将对您的电脑造成伤害/MAC OS 升级到10.15.3后vmware虚拟机黑屏 mac系统下,vm虚拟机提示打不开/dev/vmmon mac VMware Workstation 在此主机上不支持嵌套虚拟化 mac VMware清理虚拟机空间 VMware Fusion 13在M2芯片的Mac上安装 Windows 11 首先需…

Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(二)

1.前言 在12.0的系统定制化开发中,由于从12.0开始SystemUI下拉状态栏和11.0的变化比较大,所以可以说需要从新分析相关的SystemUI的 布局,然后做分析来实现不同的功能,今天就开始实现关于隐藏SystemUI下拉状态栏中的通知栏布局系列二,去掉下拉状态栏中 通知栏部分 白色的…

LomBok常用注解及详细介绍

LomBok常用注解及详细介绍 前言 Lombok是一个作用于编辑器和构建工具的 Java 库,可以对编写的 Java 代码进行增强,比如说不用再写实体类的 getter 方法,equals 方法而是自动生成,自动生成日志输出变量等等,减少重复模…

C++ PrimerPlus 复习 第六章 分支语句和逻辑运算符

第一章 命令编译链接文件 make文件 第二章 进入c 第三章 处理数据 第四章 复合类型 (上) 第四章 复合类型 (下) 第五章 循环和关系表达式 第六章 分支语句和逻辑运算符 第六章 分支语句和逻辑运算符 if语句;逻辑…

笔记1.1 计算机网络基本概念

计算机网络是通信技术与计算机技术紧密结合的产物 通信系统模型: 计算机网络是一种通信网络 计算机网络是互连的、自洽的计算机集合。 互连:互联互通 自洽:无主从关系 通过交换网络互连主机 Internet:数以百万计的互连的计算设…

SpringCLoud——Nacos配置中心

Nacos实现配置管理 统一配置管理 配置更新热更新 统一配置的创建是在UI界面中完成的: 首先我们点击【配置管理】然后点击【配置列表】: 然后我们就看到了配置管理界面,但是此时这里是空的,我们可以创建一些配置文件&#xff1a…

(21)多线程实例应用:双色球(6红+1蓝)

一、需求 1.双色球: 投注号码由6个红色球号码和1个蓝色球号码组成。 2.红色球号码从01--33中选择,红色球不能重复。 3.蓝色球号码从01--16中选择。 4.最终结果7个号码:61;即33选6(红) 16选1(蓝) 5.产品: …

【MySQL索引学习】MySQL索引详细学习

一、什么是索引 索引是一种用于快速查询和检索数据的数据结构。 可以将其类比于书的目录。 索引底层的数据结构存在很多种类型,常见的索引结构有: B 树, B树 和 Hash、红黑树。在 MySQL 中,无论是 Innodb 还是 MyIsam,都使用了 …

如何在 Nginx 中隐藏版本号

文章目录 修改nginx.conf文件修改fastcgi.conf文件参考文档 修改nginx.conf文件 打开 Nginx 配置文件,一般在 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf。在 http 块中添加以下内容:server_tokens off;修改fastcgi.conf文件 编辑php…

kafka 消费者的消费策略以及再平衡1

一kafka 再平衡 1.1 kafka的再平衡 Kafka的再平衡是consumer所消费的topic发生变化时,topic上的分区再次分配的情况。 默认策略是 Range CooperativeSticky 。 Kafka 可以同时使用 多个分区分配策略。 1.2 kafka触发再平衡的情况 1.consumer group中的新增或删…

Windows系统webp图片预览插件

由于工作中经常需要对组图查看和管理,而Windows 7系统不支持在文件夹下直接预览webp图片。经过查找,发现 WebP Codec for Windows 扩展插件不错,完美地解决webp图片预览问题。 目录 1、webp文件浏览插件 2、下载插件并安装 3、浏览webp图片…

vue项目部署,出现两个ip的原因

我宁愿靠自己的力量打开我的前途,而不愿求有力者的垂青。——雨果 tags: 篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue项目部署,出现两个ip的原因相关的知识,希望对你有一定的参考价值。 参考技术A 在部署v…

Linux网络编程|TCP编程

一.网络基础 1.1网络发展史 Internet-“冷战”的产物 1957年10月和11月,前苏联先后有两颗“Sputnik”卫星上天 1958年美国总统艾森豪威尔向美国国会提出建立DARPA (Defense Advanced Research Project Agency),即国防部高级研究计划署&#…

机器学习练习-决策树

机器学习练习-决策树 代码更新地址:https://github.com/fengdu78/WZU-machine-learning-course 代码修改并注释:黄海广,haiguang2000wzu.edu.cn 1.分类决策树模型是表示基于特征对实例进行分类的树形结构。决策树可以转换成一个if…

Jsoup | Document | HTML解析器

Jsoup 一、获取 <p>标签下的所有图片 一、获取 <p>标签下的所有图片 <p> <img style"max-width: 100%;" src"http://image.svipjf.cn/1678271098160-480_01.jpg"/><img src"http://image.svipjf.cn/1678271097994-480_02…

FPGA project: uart_rs485

没有设计rs485的顶层&#xff0c;因为我的另一块板子没有TTL信号转差分信号的芯片&#xff1a;MAX3485CSA module ctrl(input wire sys_clk ,input wire sys_rst_n ,input wire key_w ,input …

如何使用 RunwayML 进行创意 AI 创作

标题&#xff1a;如何使用 RunwayML 进行创意 AI 创作 介绍 RunwayML 是一个基于浏览器的人工智能创作工具&#xff0c;可让用户使用各种 AI 功能来生成图像、视频、音乐、文字和其他创意内容。RunwayML 的功能包括&#xff1a; * 图像生成&#xff1a;使用生成式对抗网络 (…

零基础也能快速上手活动海报设计

在现代社会中&#xff0c;活动海报设计已经成为推广活动、宣传信息的重要手段之一。然而&#xff0c;对于大部分人来说&#xff0c;设计一张漂亮的海报可能会觉得困难重重。不过&#xff0c;不用担心&#xff01;现在有了乔拓云&#xff0c;零基础的你也能轻松上手活动海报设计…

GraphBase基础原理

一、GraphBase简介 互联网时代&#xff0c;随着网络技术的发展&#xff0c;企业积累的数据越来越多。伴随着数据集的不断增加&#xff0c;传统的关系型数据库查询性能会随之变差&#xff0c;特别是针对一些特殊的业务场景&#xff0c;所以迫切的需要一种新的解决方案去应对这种…

[腾讯云 Cloud Studio 实战训练营] 云上编程的革命:我的 Cloud Studio 体验之旅

文章目录 1. 无缝的云端体验1.1 云端工作站的魅力1.2 真正的在线编程1.3 强大的协作能力1.4 多平台兼容性1.5 安全和数据备份1.6 持续更新和维护1.7 灵活的资源扩展 2. 功能强大的在线 IDE2.1 基础功能全覆盖2.2 高级功能支持2.3 多语言支持2.4 自定义工作流程2.5 版本控制和协…