设为首页 - 加入收藏
广告 1000x90
您的当前位置:主页 > 教程 > 电脑教程 > 正文

计算机定点数据解说

来源:未知 编辑:天选资讯 时间:2023-08-10

  在学习计算机基础的过程中我们已经知道计算机是基于二进制对数据进行存储和运算的。学习

  或看过我之前文章的朋友肯定也明白了,无论使用何种语言编写的何种程序,最后进入处理器执行的都是一串二进制数据,是不是突然又想不明白处理器到底是怎么区分这些数据类型了?这不又绕回原来说的底层逻辑了吗,你学微机原理,学汇编指令不就是帮你解决这个问题的?回过头去研究明白了那以后何止单片机软件开发呢,芯片设计,系统、编译器开发不都能胜任了。扯远了,先回到正题。

  对于带小数的数据也是如此,同样需要将十进制数据转为二进制,并规定其符号位,指数位以及小数位。比如IEEE.754标准(即IEEE二进制浮点数算术标准)中对float,double存储逻辑的规定:

  一般情况下我们会将有小数的数据称为浮点型数据,float为单精度浮点数据,double为双精度浮点数据。正如上面所说的我们计算机使用的是以浮点法保存小数型数据的。与之对应的肯定就会有以定点的方式保存小数数据的方法。

  定点是指表示一个数值时,小数点之后的位数是固定的,天选团队有时候小数点之前的位数是固定的。上面用浮点表示的小数,小数点的位置不是固定天选的,可以根据有效位数而浮动。

  定点数类型的值其实就是个整数,需要额外做比例进位,进多少位需要根据具体的定点数类型决定。例如 1.23 使用 1/1000 缩放系数的定点数表示时是 1230;1,230,000 使用 1000 缩放系数的定点数表示也是 1230。与浮点数不同,相同类型的定点数中所有值的缩放系数都是一致的,在计算过程中也保持不变。此表示法可以用标准的整数算术逻辑单元来进行有理数的计算。

  为了效率考量,缩放系数(scaling factor)一般会是基数b(2 或是 10)的正幂次,或是负幂次,因此实际内部仍然可以用类似整数的方式处理。不过缩放系数也需依应用而定。因此许多的数字可能其数值其实是用二进制记录,但为了使用方便人类读写,缩放系数仍选择10的幂,10的幂的缩放系数也可以配合国际单位制,因为选择特定的缩放系数,可能相当于使用另外一个大小较适合的单位,例如使用厘米或微米,而不是使用米,或者是以1/3600为缩放系数的定点数来表示以小时为单位的时间值,精确到秒。

  采用定点计数法时,相邻两个数之差总是等于其中一个数的值,而采用浮点计数法时,相邻数并不是均匀分布的。另外浮点计数的计数范围是比定点计数范围要大得多,并且一般场景中浮点计数精度往往也比定点计数精度高,正因为如此,一般情况下浮点计数法更适合于一般应用场景,一般老师在课堂上也不会做详细介绍,所以我们对定点数感到陌生也完全不奇怪。

  所以现在大多数处理器芯片都是带有浮点运算器(FPU),只有在特殊的应用中才使用定点数运算,例如某些特定应用下的数字信号处理芯片(DSP)或一些低价的MCU),这类的应用强调高需求速度,低电力需求及小集成电路区域,例如影像、视频或图片等数字信号处理,进行傅里叶变换以及数字滤波器设计,或是其他一些这种数字表示法比较适合的场景,如货币计算,仪器测量计数等,这些都是有特定的精度规则,使用浮点计数反而可能带来更大的芯片资源消耗或成本开支,并且这些情况运算速度也不如定点运算快。

  当然平时使用时我们也可以编写一些特定程序对这些格式表示的数值范围进行验证。

  在一些功能复杂的处理器中会同时支持两种数据处理方式,比如STM32G4系列的芯片上携带的FMAC(filtermathaccelerator)支持的定点DSP处理功能,使用的定点格式为Q1.15。

  在这种既有定点运算又有浮点运算是处理器上做开发时我们不可避免的都会涉及到定点与浮点相互转化的问题,这时需要注意进行处理数据!

  在某些特定情况下定点运算对算法的效率优化有着出奇的效果,如果你对这方面感兴趣不妨可以研究一下经典的快速平方根算法。

  另外,我们平时做单片机开发时在一些比较低端的芯片中,比如C51单片机,请切记不要轻易使用浮点运算!如果需要进行小数运算,我们可以借助定点运算是思想在程序中通过设计一定的比例系数对数据进行放大或缩小处理,从而实现某些功能。不要问我为啥,举个简单的例子,利用超声波模块测距,你自己写两个程序,一个使用浮点,一个不使用做个实验测试一下就可以知道结果是怎么的了。

  的基础知识,了解这些基础知识对于后面学习ARM官方的DSP库大有裨益。特别是初学的一定要理解这些基础知识。 7.1

  (Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中间

  请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行浮

  和浮点之间的转换。请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行浮

  运算的verilog实现,很详细,先传上来 Verilog 最后的私私细语 第一章 不同世界的自然.pdf (3.45 MB )

  互转17.1 初学者重要提示17.2 DSP基础运算指令17.3 ...

  在傅里叶变换(FFT)的实际应用中的选择单片机中如果需要进行一定的运算(常见的傅里叶变换)时,需要在不同情况下对AD采集的

  在傅里叶变换(FFT)的实际应用中的选择单片机中如果需要进行一定的运算(常见的傅里叶变换)时,需要在不同情况下对AD采集的

  在STM32单片机中使用傅里叶(FFT)变换的理解 /

  中常用的表示方法 所以必须要弄懂原理,特别是在FPGA里面,由于FPGA不能像在MCU一样直接用乘除法。 首先说一下简单的

  截位的基本准则 /

  #硬声新人计划 无源雷达探测目标 不发射信号,使用调频广播探测目标,最大探测距离超过200公里#雷达

相关推荐:

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

织梦模板大全 dedecms.codesdq 联系QQ:121673232 邮箱:121673232@qq.com

Copyright © 2002-2011 DEDECMS. 织梦科技 版权所有 Power by DedeCms

Top