关于Q格式数据总结

2023-11-03

Q格式表示为:Qm.n,表示数据用m比特表示整数部分,n比特表示小数部分,共需要 m+n+1位来表示这个数据,多余的一位用作符合位。假设小数点在 n位的左边(从右向左数),从而确定小数的精度
例如Q15表示小数部分有15位,一个short 型数据,占2个字节,最高位是符号位,后面 15位是小数位,就假设小数点在第 15位左边,表示的范围是: -1<X<0.9999695  。浮点数据转化为 Q15,将数据乘以2^15;Q15数据转化为浮点数据,将数据除以 2^15

例如:假设数据存储空间为 2个字节,0.333×2^15=10911=0x2A9F ,0.333的所有运算就可以用0x2A9F 表示,同理10911×2^(-15)=0.332977294921875 ,可以看出浮点数据通过 Q格式转化后是有误差的。
例:两个小数相乘,0.333*0.414=0.137862 0.333*2^15=10911=0x2A9F ,0.414*2^15=13565=0x34FD short a = 0x2A9F; 
short b = 0x34FD; 
short c = a * b >> 15; //  两个Q15格式的数据相乘后为 Q30格式数据,因此为了得到 Q15的数据结果需要右移15位
这样c的结果是0x11A4=0001000110100100 ,这个数据同样是 Q15格式的,它的小数点假设在第15位左边,即为0.001000110100100=0.1378173828125... 和实际结0.137862 差距不大。或者0x11A4 / 2^15 = 0.1378173828125 
Q格式的运算
1> 定点加减法:须转换成相同的 Q格式才能加减
2> 定点乘法:不同Q格式的数据相乘,相当于Q值相加,即Q15数据乘以Q10数据后的结果是 Q25格式的数据
3> 定点除法:不同 Q格式的数据相除,相当于 Q值相减
4> 定点左移:左移相当于 Q值增加
5> 定点右移:右移相当于 Q减少
Q格式的应用格式
实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两种方法:
1> 使用时使用适中的定标,既可以表示一定的整数复位也可以表示小数复位,如对于 2812的32位系统,使用Q15格式,可表示-65536.0~65535.999969482 区间内的数据。
2> 全部采用小数,这样因为小数之间相乘永远是小数,永远不会溢出。取一个极限最大值(最好使用2的n次幂),转换成x/Max 的小数(如果Max是取的2的n次幂,就可以使用移位代替除法) 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于Q格式数据总结 的相关文章

  • Js动态加载CSS样式文件的2种方法

    动态加载CSS文件 这个时常会用到 一般搞前端 我们最先想到的就是用JS来实现 的确 JS可以很方便的控制CSS样式表文件的动态插入 以下两种方法 使用 一 使用 这点采用了YUI插件中的一个方法 有效解决了各大浏览器的兼容性问题 主要是使
  • 面试经典(25)--二叉查找树(搜索树)

    二叉搜索树是经典的数据结构 本文来总结一下二叉搜索树的插入和删除算法 插入算法 struct Node int key struct Node parent struct Node left struct Node right struct
  • Elasticsearch实战(三)---复杂数据结构及映射 Mapping操作

    Elasticsearch实战 复杂数据结构及映射 Mapping操作 文章目录 Elasticsearch实战 复杂数据结构及映射 Mapping操作 1 ElasticSearch 映射操作 1 1 结构 1 2 映射 1 3 映射 显
  • CentOS8安装keepalived和lvs遇到的坑

    CentOS8 最小化安装 关闭selinux 两个负载yum 安装keepalived 和ipvsadm 一 没有配置ip forward lvs用DR模式不用 二 没有配置虚拟IP 只在keepalived配置中写的 前期是没有会配置虚
  • Java七大设计原则 - 接口隔离原则

    一 什么是 接口隔离原则 Interface Segregation Principle 原则含义 一个类对于另外一个类的依赖应该建立在最小的接口上 1 接口隔离原则 实际上它是建立在另一种设计原则之上 依赖倒置 的 即 面向接口编程 而
  • 【C++】C++封装成DLL并调用(初学者快速入门)

    话不多说 干货走起 侵删 使用vs2019将C 封装成DLL并调用主要有以下几个步骤 1 新建工程 编写要封装的 cpp和 h文件 2 生成动态链接库 dll和静态链接库 lib 3 调用通过 h文件调用 第一步 编写 cpp和 h文件 本
  • Linux中vi的用法

    vi 有三种工作模式 普通模式 1 输入模式 2 命令模式 3 末行模式 ese 退出到普通模式 输入模式 a 光标处的后面切换到输入 A 光标跳转到当前行的最末端 i 光标处的前面输入 I 光标跳到当前行的最前端 r 替换光标处的一字母
  • 判断一个字符串中各个字符出现的次数

    我这里使用了两种方法 两种方法思路差不多 但是使用处理字符串的方法不一样 所以执行效率不一样 long xxx System nanoTime 这个方法用来标记执行方法前后的时间点 看最终执行完所用时间 纳秒 第一种方法效率高 时间快 不是
  • 基于Matlab GUI的形态学方法进行水果大小识别

    基于Matlab GUI的形态学方法进行水果大小识别 在本文中 我们将探讨如何使用Matlab的图形用户界面 GUI 和形态学方法来进行水果大小的识别 形态学是一种图像处理技术 主要用于提取和改善图像中的形状和结构信息 我们将使用Matla
  • YOLOX训练代码分析1-COCO与VOC训练

    1 YOLOX的网络结构图与代码YOLOv3 YOLOv4 YOLOv5 YOLOx的网络结构图 清晰版 YMilton的专栏 CSDN博客 https blog csdn net YMilton article details 12026
  • 最短路径(Dijkstra)算法

    目录 一 Dijkstra算法 二 核心思路 三 步骤 四 代码 一 Dijkstra算法 迪杰斯特拉 Dijkstra 算法是由荷兰计算机科学家狄克斯特拉于1959年提出的 是寻找从一个顶点到其余各顶点的最短路径算法 可用来解决最短路径问
  • 获取自定义弹出框的DialogResult的值以及返回用户输入的值

    在编写Winform程序时 有些情况下需要自己定义一个弹出框 获取用户选择的是YES还是NO 并且获取用户输入的数据 首先 自定义弹出框非常容易编写 利用Form可以制作成一个对话框样式 并且在主程序中以模态形式显示 ShowDialog
  • 如何安装多个node版本(使用nvm)

    1 卸载之前安装的所有node 2 下载nvm安装包 下载地址https nvm uihtm com 3 安装nvm 4 打开cmd 运行命令 nvm install node版本号 安装对应版本的node 5 打开nvm的安装路径 可以看
  • EMD 经验模态分解

    文章目录 1 本征模态函数 IMF 2 算法步骤 3 MATLAB代码 4 C代码 5 应用 缺点和改进 6 相关链接 EMD Empirical Mode Decomposition 是由美国国家宇航局的华裔科学家Norden e Hua
  • ​​insecure-configuration --复现

    有什么不对的地方希望大佬指导 也希望正在学习渗透的小伙伴加油 坚持下去 努力耕耘 总有收获 配置错误导致漏洞 insecure configuration 影响版本 全版本 启动环境 docker compose up d 运行成功后 环境
  • vue3+ts-数据自动滚动效果

    html
  • annconda 安装之后运行 conda 出现conda: command not found

    大概有两种方法 1 直接在终端运行export PATH anaconda的安装路径 bin PATH 但这样貌似只能 在这个终端使用 如果另开一个终端的话还会出现一样的问题 换句话说 直接运行 这个代码只是临时的 2 在home目录下运行
  • 数学符号大全(量词符号、代数符号等)

    量词符号 任意 存在 且 或 非 数学符号 alpha alfa 阿耳法 beta beta 贝塔 gamma gamma 伽马 deta delta 德耳塔 epsilon epsilon 艾普西隆 zeta zeta 截塔 eta et
  • 解决SQL语句警告提示

  • MySQL之mysqldump备份和恢复

    一 备份单个数据库 1 备份命令 mysqldump MySQL数据库自带的一个很好用的备份命令 是逻辑备份 导出 的是SQL语句 也就是把数据从MySQL库中以逻辑的SQL语句的形式直接输出或生成备份的文件的过程 单实例语法 Syntax

随机推荐

  • 【深度学习】如何用PyTorch构建一个ResNet50网络?(附代码)

    ResNet Residual Network 是一种深度卷积神经网络 具有非常深的网络结构 并在ImageNet图像分类比赛中取得了很好的成绩 ResNet的一个关键点是增加了残差块 residual block 使网络更容易训练 Res
  • 用busybox构建最小根文件系统详解

    1 busybox源码获取 1 busybox官网下载地址 https busybox net 2 建议下载busybox的版本 尽量和你使用的编译环境 比如 Ubuntu 的版本相近 版本差太多可能需要解决一些编译时候的兼容问题 2 bu
  • 处理textarea的空格和换行

    刚发了一篇博客 然后发现csdn在发布用户的文章时好像没有处理输入的换行和空格 之前没有很在意 因为这次我辛苦缩进的代码居然显示一团糟 有点接受不了 鉴于最近做的需求遇到了这个问题 所以说一下这个问题 鉴于开发是在windows下的 lin
  • linux总结-vi、vim简介(3)

    什么是vim vim是从 vi 发展出来的一个文本编辑器 代码补完 编译及错误跳转等方便编程的功能特别丰富 在程序员中被广泛使用 vim键盘图 初次见面 看不懂上图没关系 不妨先继续学习vim 大致了解vim后再来细细品味它 vi vim
  • c语言字符串做为函数参数传递,c语言:字符串做为函数参数传递

    1 值传递 void swap int x int y int temp x x y y temp void main int a 10 b 20 swap a b 执行后 并不会交换 2 引用传递 void swap int x int
  • C# 连接mySQL数据库访问异常:“给定关键字不在字典中”解决方案

    在自己电脑上开发的软件连接本机mysql数据库一切正常 部署到客户那边 运行时报异常 给定关键字不在字典中 原因 本机MySql数据库和客户那边的数据库版本不一致 使用的mysql data dll版本太低导致的 解决 更换mysql da
  • 深入理解Java内存模型

    作者 谢照东 链接 https www zhihu com question 29037280 answer 43136323 来源 知乎 著作权归作者所有 商业转载请联系作者获得授权 非商业转载请注明出处 我只是编码界的搬运工 深入理解J
  • 淘宝APP用户行为数据分析案例(附python代码及注释)

    淘宝APP用户行为数据分析案例 一 分析背景与目的 1 1背景与数据限制 电商平台的最核心的功能就是为买卖双方提供高效和体验良好的交易服务 得益于算法技术的发展 淘宝APP给买方提供了搜索 推荐及广告等系统和功能 使用户能高效地触达感兴趣或
  • 电力电子技术笔记-整流电路5

    电容滤波的不可控整流电路 在交 直 交变频器 不间断电源 开关电源等应用场合中 大量应用 最常用的是单相桥和三相桥两种接法 由于电路中的电力电子器件采用整流二极管 故也称这类电路为二极管整流电路 1 电容滤波的单相不可控整流电路 常用于小功
  • hugging face 官方文档——datasets、optimizer

    文章目录 一 Load dataset 1 1 Hugging Face Hub 1 2 本地和远程文件 1 2 1 CSV 1 2 2 JSON 1 2 3 text 1 2 4 Parquet 1 2 5 内存数据 python字典和D
  • 关于操作系统学习路线分析

    自己学习操作系统的时间也挺长了 虽然目前的成果还不是特别明显 但是在这段时间中还是学习了很多 今天想在这里和大家分享一下如何学习操作系统 以及如何制定学习操作系统的路线 以下是针对有过编程经历的 1 首先操作系统是人机交互的代理 那么作为操
  • 记录错误:cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\m

    使用Opencv时出现错误 cv2 error OpenCV 4 4 0 C Users appveyor AppData Local Temp 1 pip req build h4wtvo23 opencv modules imgproc
  • LTE学习笔记2:DMA多分址,制式,速率,性能指标

    1 DMA division multiple access 分多址 多址方式 TDMA 时分多址 FDMA 频分多址 CDMA 码分多址 SDMA 空分多址 PDMA 包分多址 3G技术 TD SCDMA TDD WCDMA FDD CD
  • windows通过wsl2安装ubuntu系统

    wsl Windows Subsystem for Linux 即用于Windows的安装Linux子系统 实现了在windows 10 或 windows 11上运行原生Linux系统的功能 wsl2 为其最新版本 可以更好的在Windo
  • 华为OD机试 - 消消乐游戏(Java)

    题目描述 游戏规则 输入一个只包含英文字母的字符串 字符串中的两个字母如果相邻且相同 就可以消除 在字符串上反复执行消除的动作 直到无法继续消除为止 此时游戏结束 输出最终得到的字符串长度 输入描述 输入原始字符串 str 只能包含大小写英
  • python音频分析工具_python – 鸟鸣音频分析 – 查找两个剪辑的匹配程度

    要做出这个答案 因为评论太久了 我基本上在这个领域工作 所以我觉得我有一些知识 显然 从我的立场来看 我建议使用音频而不是图像 我还建议使用MFCC作为特征提取 您可以将其视为总结 表征音频特定子带的系数 因为它们 GMM是去的 要执行此任
  • SSM入门—SpringMVC框架

    1 SpringMVC概述 Spring Web MVC 是一种基于Java的实现Web MVC设计模式的请求驱动类型的轻量级Web框架 2 MVC的设计模式 M model 模型 业务模型 数据模型 实体 业务代码 数据代码 V View
  • websocket(一)--握手

    最近在琢磨怎么实现服务端的消息推送 因为以前都是通过客户端请求来获取信息的 如果需要实时信息就得轮询 比如通过ajax不停的请求 websocket相当于对HTTP协议进行了升级 客户端和服务端通过websocket协议握手成功后 两者之间
  • 动态内存管理—(malloc、calloc、realloc、free)及常见使用错误

    目录 存在动态内存分配的意义 动态内存函数的介绍 malloc和free calloc realloc realloc在调整内存空间的是存在两种情况 由于上述的两种情况 realloc函数的使用就要注意一些 补充一点 常见的动态内存错误 对
  • 关于Q格式数据总结

    Q格式表示为 Qm n 表示数据用m比特表示整数部分 n比特表示小数部分 共需要 m n 1位来表示这个数据 多余的一位用作符合位 假设小数点在 n位的左边 从右向左数 从而确定小数的精度 例如Q15表示小数部分有15位 一个short 型