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

目录

一.简介

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.rhkb.cn/news/133524.html

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

相关文章

5G定位技术原理与应用场景

5G高精度定位服务不仅适用于应急,还可以支持大量的个人业务,包括室外和室内场景,可以在交通道路、隧道、地下停车场或室内环境中支持高精度定位服务。在这些区域中,由于卫星信号的覆盖范围较小,基于5G网络的高精度定位…

定时器类的编写与解析 —— TinyWebServer

定时器类的编写与解析 —— TinyWebServer 一、前言 定时器非常好写。就是链表加定时函数。搞懂他的作用就成。 定时器的作用是什么?什么是回调函数?用到的函数是什么? 二、问题回答 Ⅰ、定时器的作用是什么? 处理非活跃的连…

基于ssm的蛋糕预定网站

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

强强/视频SDK:VisioForge SDKs .Net 15.6.8 Crack

VisioForge 为软件开发人员提供视频捕获、编辑和播放解决方案 使用我们的开发人员软件,您可以开发用于从多种来源(例如网络摄像头、IP 摄像机、摄像机或 PC 屏幕)捕获视频的应用程序。视频可以保存为所有最流行格式的视频文件,例如…

基于matlab实现的平面波展开法二维声子晶体能带计算程序

Matlab 平面波展开法计算二维声子晶体二维声子晶体带结构计算,材料是铅柱在橡胶基体中周期排列,格子为正方形。采用PWE方法计算 完整程序: %%%%%%%%%%%%%%%%%%%%%%%%% clear;clc;tic;epssys1.0e-6; %设定一个最小量,避免系统截断误差或除零错…

解决vue项目导出当前页Table为Excel

解决vue项目中导出当前页表格为Excel表格的方案 用到的技术&#xff1a; Vue2Element-uifile-saverxlsx 1、创建vue项目&#xff0c;安装element-ui 2、创建一个组件&#xff0c;组件内放入表格&#xff0c;和导出按钮 <template><div><!-- 导出的按钮 -->…

Ubuntu20.04安装Nvidia显卡驱动、CUDA11.3、CUDNN、TensorRT、Anaconda、ROS/ROS2

1.更换国内源 打开终端&#xff0c;输入指令&#xff1a; wget http://fishros.com/install -O fishros && . fishros 选择【5】更换系统源&#xff0c;后面还有一个要输入的选项&#xff0c;选择【0】退出&#xff0c;就会自动换源。 2.安装NVIDIA驱动 这一步最痛心…

Python stomp 发送消息无法显示文本

我们向消息服务器通过 stomp 发送的是文本消息。 当消息服务器发送成功后&#xff0c;消息服务器上的文本没有显示&#xff0c;显示的是 2 进制的数据。 如上图&#xff0c;消息没有作为文本来显示。 问题和解决 消息服务器是如何判断发送的小时是文本还是二进制的。 根据官…

uniapp微信小程序地图实现周边

官方说明&#xff1a;小程序JavascriptSDK使用指南 - 微信小程序解决方案 | 腾讯位置服务https://lbs.qq.com/product/miniapp/jssdk/ 先申请腾讯地图的开发者密钥&#xff0c;申请地址&#xff1a;腾讯位置服务 - 立足生态&#xff0c;连接未来 申请密钥时&#xff0c;需要勾…

Keepalived 高可用(附带配置实例,联动Nginx和LVS)

Keepalived 一、Keepalived相关知识点概述1.1 单服务的风险&#xff08;单点故障问题&#xff09;1.2 一个合格的集群应该具备的特性1.3 VRRP虚拟路由冗余协议1.4 健康检查1.5 ”脑裂“现象 二、Keepalived2.1 Keepalived是什么&#xff1f;2.2 Keepalived体系主要模块及其作用…

HBASE知识点

HBASE是什么&#xff1f; 高可靠、高性能、面向列、可伸缩、实时读写的分布式数据库。利用HDFS作为其文件存储系统&#xff0c;利用MapReduce来处理HBase中的海量数据。利用Zookeeper作为其分布式协同服务。用于存储非结构化和半结构化的松散数据。 HBase数据模型 RowKey: 唯…

[maven] scopes 管理 profile 测试覆盖率

[maven] scopes & 管理 & profile & 测试覆盖率 这里将一些其他的特性和测试覆盖率&#xff08;主要是 jacoco&#xff09; scopes maven 的 scope 主要就是用来限制和管理依赖的传递性&#xff0c;简单的说就是&#xff0c;每一个 scope 都有其对应的特性&…

解决IDEA actiBPM插件之.bpmn文件中文乱码

1、修改IDEA编辑器编码为utf8&#xff0c;File->Settings->Editor->File Encodings&#xff0c;都改为UTF-8 2、在IDEA安装bin目录下&#xff0c;找到 idea.exe.vmoptions 和 idea64.exe.vmoptions 两个文件&#xff0c;打开编辑分别在文本最末端添加下面代码&#xf…

⑩ vue新特性

ref 或者reactive ref相当于data methods props和context props &#xff01;&#xff01;&#xff01;setup中没有this关键字&#xff0c;使用context&#xff08;简写&#xff1a;ctx&#xff09;就是this 在steup中使用生命周期函数 Provide / Inject 1、原来是 a传…

VS2015+opencv 3.4.6开发环境

VS2015+opencv 3.4.6开发环境 一、安装包下载二、安装过程三、VS环境配置四、测试一、安装包下载 这里提供两种下载方法:   1. opencv官网   2. csdn资源下载 二、安装过程 2.1 下载opencv-3.4.6 安装包 2.2 双击开始安装,选择要安装目录,点击Extract。  2.3 等待解…

【MATLAB第75期】#源码分享 | 基于MATLAB的不规则间隔数据插值实现时间序列数据扩充(更新中)

【MATLAB第75期】#源码分享 | 基于MATLAB的不规则间隔数据插值实现时间序列数据扩充 代码 %% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear % 清空变量 clc % 清空命令行%%…

批量多字段唯一性校验

批量多字段唯一性校验 思路&#xff1a; 查询列表本身是否含有重复数据新增修改分开考虑&#xff0c;新增只考虑数据库中是否有相同数据&#xff0c;修改不仅要考虑数据库中是否有相同数据&#xff0c;还要排除自身。由于是批量校验&#xff0c;排除自身只需考虑所有修改操作…

[当人工智能遇上安全] 9.基于API序列和深度学习的恶意家族分类实例详解

您或许知道&#xff0c;作者后续分享网络安全的文章会越来越少。但如果您想学习人工智能和安全结合的应用&#xff0c;您就有福利了&#xff0c;作者将重新打造一个《当人工智能遇上安全》系列博客&#xff0c;详细介绍人工智能与安全相关的论文、实践&#xff0c;并分享各种案…

线程同步互斥锁

共用三个函数&#xff1a; mutex_lock() mutex_unlock() mutex_trylock() pthread_mutex_lock给安卓上层使用&#xff0c;mutex_lock给kernel使用&#xff0c;本质是一样的&#xff0c;都是IPC通信中的互斥锁&#xff0c;只不过安卓上层封装出pthread_mutex_lock。 pthr…

安装深度(Deepin)系统

Deepin系统安装 Deepin是和Ubuntu一样&#xff0c;是一个基于Debian的Linux的发型版本。 Deepin相对于Ubuntu&#xff0c;Deepin更适合中国用户的使用习惯。 一 官网工具制作启动盘 制作启动盘、和安装系统&#xff0c;操作非常简单&#xff0c;nice&#xff01; 官网提供了…