matlab实现浮点转定点,浮点转定点方法总结.doc

浮点转定点方法总结

浮点转定点方法总结

—孔德琦

目录

定点运算方法3

1.1 数 的 定 标3

1.2c语言:从浮点到定点4

1.2.1 加法4

1.2.2乘法6

1.2.3除法7

1.2.4 三角函数运算8

1.2.5 开方运算9

1.3 附录10

1.3.1 附录1:定点函数库10

1.3.2附录2:正弦和余弦表28

定点运算方法

1.1 数 的 定 标

对某些处理器而言,参与数值运算的数就是16位的整型数。但在许多情况下,数学运算过程中的数不一定都是整数。那么,如何处理小数的呢?应该说,处理器本身无能为力。那么是不是就不能处理各种小数呢?当然不是。这其中的关键就是由程序员来确定一个数的小数点处于16位中的哪一位。这就是数的定标。

通过设定小数点在16位数中的不同位置,就可以表示不同大小和不同精度的小数了。数的定标用Q表示法。表1.1列出了一个16位数的16种Q表示能表示的十进制数值范围和近似的精度。

Q表示精度(近似)十进制数表示范围Q150.00002-1≤X≤0.9999695Q140.00005-2≤X≤1.9999390Q130.0001-4≤X≤3.9998779Q120.0002-8≤X≤7.9997559Q110.0005-16≤X≤15.9995117Q100.001-32≤X≤31.9990234Q90.002-64≤X≤63.9980469Q80.005-128≤X≤127.9960938Q70.01-256≤X≤255.9921875Q60.02-512≤X≤511.9804375Q50.04-1024≤X≤1023.96875Q40.08-2048≤X≤2047.9375Q30.1-4096≤X≤4095.875Q20.25-8192≤X≤8191.75Q10.5-16384≤X≤16383.5Q01-32768≤X≤32767表1.1 Q表示、S表示及数值范围

从表1.1可以看出,同样一个16位数,若小数点设定的位置不同,它所表示的数也就不同。例如:

16进制数2000H=8192,用Q0表示

16进制数2000H=0.25,用Q15表示

从表1.1还可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。例如,Q0的数值范围是-32768到+32767,其精度为1,而Q15的数值范围为-1到0.9999695,精度为 1/32768 = 0因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。

浮点数与定点数的转换关系可表示为:

浮点数(x)转换为定点数():

定点数()转换为浮点数(x):

例如,浮点数 x=0.5,定标 Q=15,则定点数=,式中表示下取整。反之,一个用 Q=15 表示的定点数16384,其浮点数为16384×2-15

=16384/32768=0.5。

c语言:从浮点到定点

下面所描述的几种基本运算是浮点到定点转换中经常遇到的,从中可以体会到一些基本的技巧和方法。

1.2.1 加法

设浮点加法运算的表达式为:

float x,y,z;

z=x+y;

将浮点加法/减法转化为定点加法/减法时最重要的一点就是必须保证两个操作数的定标值一样。若两者不一样,则在做加法/减法运算前先进行小数点的调整。为保证运算精度,需使Q值小的数调整为与另一个数的Q值一样大。此外,在做加法/减法运算时,必须注意结果可能会超过16位表示,即数的动态范围。如果加法/减法的结果超出16位的表示范围,则必须保留32位结果,以保证运算的精度。

结果不超过16位表示范围

设x的Q值为Qx,y的Q值为Qy,且Qx>Qy,加法/减法结果z的定标值为Qz,则

z=x+y (

=

= (

一般情况,我们取x,y和z的定标值相同,即Qx = Qy = Qz = Qa 。

所以定点加法可以描述为:

short x, y, z ; //Qa

z = add (x,y); //Qa

函数add ( ) 有防饱和机制,如果可以确信x + y 不会溢出(-2^15 <= z < = 2^15-1),可以直接写为 z = x + y .

定点减法:

short x, y, z ; //Qa

z = sub (x,y); //Qa

函数sub ( ) 有防饱和机制,如果可以确信x - y 不会溢出(-2

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

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

相关文章

caffe官网的部分翻译及NG的教程

Caffe原来叫&#xff1a;Convolutional Architecture for Fast Feature Embedding 官网的个人翻译&#xff1a;http://blog.csdn.net/fengbingchun/article/details/49535873 NG的英文教程&#xff1a;http://ufldl.stanford.edu/tutorial/supervised/MultiLayerNeuralNetworks…

matlab 中 t=0:t:(n-1)t;k=0:n-1,《MATLAB语言与应用》练习题答案

《MATLAB 语言与应用》实验课程任务书一、 实验教学目标与基本要求上机实验是本课程重要的实践教学环节&#xff1b;实验的目的不仅仅是验证理论知识&#xff0c;更重要的是通过上机实验&#xff0c;加强学生的实验手段与实践技能&#xff0c;掌握应用MATLAB 语言求解问题的方法…

Kerbose

http://blog.csdn.net/wulantian/article/details/42418231转载于:https://www.cnblogs.com/diyunpeng/p/5175290.html

IIS虚拟目录实现与文件服务器网络驱动器映射共享

这篇文章转载别人&#xff0c;想原创作者致敬&#xff01; 我本人也遇到同样的问题&#xff0c;故转载记录。 本文重点描述如何使用IIS访问共享资源来架设站点或执行 ASP.Net 等脚本。 通常情况下&#xff0c;拥有多台服务器的朋友在使用IIS建立站点的时候&#xff0c;会遇到如…

rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密

项目中在用户登录时需要进行用户名和密码加密,这里选用了RSA非对称加密的方式.公钥私钥:OpenSSL的公钥私钥(Node crypto模块限制)前端: jsencrypt库加密后端: Node crypto模块使用openssl生成公钥私钥linux生成公钥私钥命令:genrsa -out rsa_private_key.pem 1024 // 生成1024位…

php 事件调度,MySQL的事件调度器使用介绍

自MySQL5.1.0起&#xff0c;增加了一个非常有特色的功能ndash;事件调度器(Event Scheduler)&#xff0c;可以用做定时执行某些特定任务&#xff0c;可以看作基于自MySQL5.1.0起&#xff0c;增加了一个非常有特色的功能–事件调度器(Event Scheduler)&#xff0c;可以用做定时执…

mysql中括号_干货!Python与MySQL数据库的交互实战

作者 | Huang supreme&#xff0c;责编 | 郭芮头图 | CSDN 下载自视觉中国安装PyMySQL库如果你想要使用python操作MySQL数据库&#xff0c;就必须先要安装pymysql库&#xff0c;这个库的安装很简单&#xff0c;直接使用pip install pymysql&#xff1b;假如这种方式还是安装不上…

Xcode清缓存

前往-->按住option键进入资源库-->Developer-->Xcode-->DerivedData 删除里面的文件就行了转载于:https://www.cnblogs.com/10-19-92/p/5181940.html

苹果天气不显示_热门天气APP被苹果拿下,安卓用户不能再使用

近日&#xff0c;Android平台最受欢迎的订阅式天气APP之一Dark Sky官方宣布其被苹果收购。收购后&#xff0c;Android和Wear OS上的Dark Sky APP都会在2020年7月1日下架&#xff0c;届时将关闭服务并提供退款&#xff0c;iOS版APP则不受影响。Dark Sky天气预报Dark Sky服务早就…

java 安全 认证和授权,Java安全之认证与授权

Java平台提供的认证与授权服务(Java Authentication and Authorization Service (JAAS))&#xff0c;能够控制代码对敏感或关键资源的访问&#xff0c;例如文件系统&#xff0c;网络服务&#xff0c;系统属性访问等&#xff0c;加强代码的安全性。主要包含认证与授权两部分&…

Struts2使用OGNL遍历各种map总结

一.Action中的代码&#xff1a;MapAction.java package com.zx.demo.action; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.opensymphony.xwork2.ActionSupport; import com.zx.demo.model.Prod…

java 数组下标6,这里为什么用equals会错,改==就不会?java入门第一集6.8获取数组下标课后练习...

源自&#xff1a;6-8 使用 foreach 操作数组这里为什么用equals会错&#xff0c;改就不会&#xff1f;java入门第一集6.8获取数组下标课后练习public class practice_1_6_8 {public static void main(String[] args) {int[] cored {11,22,33,44,55,66,77,88,99,00};System.out…

WC总结

去了人生中第一次全国WC&#xff0c;在四川绵阳南山中学举行&#xff0c;去了这么一次&#xff0c;感受颇多&#xff0c;不忍心白白地让时间流逝&#xff0c;于是写篇随笔记录一下。 全程&#xff0c;共计8天。 【第1天】 签到&#xff0c;拿餐票&#xff0c;看了看讲义&#x…

求n的阶乘的算法框图_算法|从阶乘计算看递归算法

欢迎点击「算法与编程之美」↑关注我们&#xff01;本文首发于微信公众号&#xff1a;"算法与编程之美"&#xff0c;欢迎关注&#xff0c;及时了解更多此系列文章。1理解递归“程序设计是实践计算机思维的重要手段”。程序设计的三种特征就是封装、继承和多态。而对于…

matlab画无量纲速度分布,麦克斯韦分布与概率论中典型分布的比较教学

大学物理和高中物理的衔接教学已经受到大学教师足够的重视和研究[1-3]。大学物理的数学基础是大学数学,特别是微积分和概率论。关于大学物理和大学数学课程的有效衔接和融汇教学国内也有初步的研究和实践[4-6]。本文笔者在河海大学多年的《大学物理》教学经历中明显感觉到学生对…

Python成长之路_装饰器

一、初入装饰器 1、首先呢我们有这么一段代码&#xff0c;这段代码假设是N个业务部门的函数 1 def f1(aaa): 2 print(我是F1业务) 3 if aaa f1: 4 return ok 5 6 def f2(aaa): 7 print(我是F2业务) 8 if aaa f2: 9 return ok 业务代码这里的…

python卸载_删除系统 Python 引发的惨案

这个案例告诉我们&#xff0c;千万不要动系统自带的 Python&#xff0c;Win系统除外文 | fanzhenyu 出处 | http://fanzhenyu.cn/由于无知&#xff0c;卸载 Ubuntu 自带的 python3 引发惨案&#xff0c;谨记&#xff0c;深刻反思。惨案由于实验需要使用 Python3.6 以上版本&…

php 删除特殊符号,利用PHP删除特殊符号

在编程的时候&#xff0c;不管你是偏向PHP等较为简单的编程&#xff0c;还是说想Java等更需要逻辑的强类型语言编程&#xff0c;都会或多或少地接触到对特殊符号的处理。特殊符号虽然显得不怎么起眼&#xff0c;但却极有可能会让程序实现不了初衷的目的运行效果。我们最常见到的…

gbdt 回归 特征重要性 排序_gbdt、xgb、lgb、cat面经整理——from牛客

注意&#xff0c;下文的原始的gbdt是以sklearn中的gbdt的实现为例子来阐述的&#xff0c;因为gbdt的改进版本有很多&#xff0c;为了叙述方便&#xff0c;使用这个最为人所知的实现来描述。你有自己用过别的模型然后调参之类的吗&#xff1f;能说一下基本的调参流程吗&#xff…

深入C#类的方法

构造函数 example1&#xff1a; static void Main(string [] args) {SE engineernew SE();engineer.Age25;enginner.Name"艾边成";//省略其他属性赋值操作Console.WriteLine(engineer.SayHi());} 我们知道要使用类的属性和方法&#xff0c;首先要对类进行实例化&…