基于FPGA的数字信号处理(16)--定点数的舍入模式(7)6种舍入模式的总结

前言

        在前面的6篇文章中,分别对6中舍入模式做了详细的介绍,本文在前文的基础上,再对这6种舍入模式做一个对比和总结。

6种舍入模式

        在数据处理过程中,为了防止数据溢出而增加位宽是一种很常见的处理方式,但是随着算法链的深入,如果任由位宽无限度地增长的话,就是导致使用资源爆炸。所以为了防止这种情况的出现,我们需要对数据的位宽做一定的截位处理,即舍入。

        四舍五入就是一种最常见的舍入方式,除次之外,还有以下几种:

  • round:即四舍五入,它的舍入方式是舍入到最近的整数,在0.5这类往两边距离都一致的情况时,正数向上取整,而负数则向下取整。例如round(0.5) =1;round(-0.5) =-1

  • nearest:另一种形式的“四舍五入”,与round一样,也是舍入到最近的整数,但在对0.5这类情况时,它是不管正负,都是向上取整,例如nearest(0.5) =1;nearest(-0.5) = 0

  • convergent:另一种形式的“四舍五入”,与round一样,也是舍入到最近的整数,但在对0.5这类情况时,它是不管正负,都舍入到最近的偶数,例如convergent(0.5) =0;convergent(1.5) = 2;convergent(-0.5) =0;convergent(-1.5)=-2 ;

  • floor:向下取整,即所有数都向着负无穷的方向,就近舍入到最近的整数,例如floor(0.25)=0;floor(1.5)=1;floor(-0.75)= -1;floor(-1.25)= -2;

  • ceil:向上取整,即所有数都向着正无穷的方向,就近舍入到最近的整数,例如ceil(0.25)= 1;ceil(1.5)=2;ceil(-0.75)= 0;ceil(-1.25)= -1;

  • fix:向0取整,所有数都向着0的方向,即正数向着负无穷的方向(floor),负数向着正无穷的方向(ceil),就近舍入到最近的整数。例如fix(0.25)= 0;fix(1.5)=1;fix(-0.75)= 0;fix(-1.25)= -1;

偏置与误差

        以上6种模式可以分为2类:

  • round、nearest、convergent:都是舍入到最近的整数,只是对中间数的处理方式不同。

  • floor、ceil、fix:都是向某一个方向取整。

        由于舍入方式的不同,所以带来的偏置和误差也不相同:

  • round:都是舍入的最近的整数,所以误差最多只有分辨率的一半。例如舍入到小数点后1bit,那么分辨率为0.5,误差最大的情况就是0.75到1这类情况。因为对于正的中间数而言相当于向上取整,对于负的中间数相当于向下取整。所以当数据是负样本时,由于round的处理,会带来一部分的负偏置;当数据是正样本时,由于round的处理,会带来一部分的正偏置;对于数据分布均匀的正值和负值样本时,则无偏置。

  • nearest:同上,误差最多也只有分辨率的一半。因为中间数都是向上取整,所以不管是正值样本还是负值样本,它都是有正的偏置。

  • convergent:同上,误差最多也只有分辨率的一半。因为中间数是舍入到最近的偶数,相当于一般向上取整,一半向下取整,所以它没有偏置。

  • floor:向下取整,正数相当于舍弃小数位;负数相当于舍弃小数位后再减1。误差最大为接近分辨率的值。例如保留1位小数,x.111111111····11(假设它位宽非常长),向下取整就是x.1,舍弃的部分为0.0111111111····11,这个数是无限接近分辨率的,即0.1(0.5)。向下取整相当于全部添加1个负方向的偏置。

  • ceil:向上取整,正数相当于舍弃小数位+1;负数相当于舍弃小数位。误差最大为接近分辨率的值。例如保留1位小数,x.00000000·····1(假设它位宽非常长),向上取整就是x+0.1,舍弃的部分为x+0.1-x.00000000····1=0.0111111111····11,这个数是无限接近分辨率的,即0.1(0.5)。向上取整相当于全部添加1个正方向的偏置。

  • fix:向0取整。正数相当于向下取整,即舍弃小数位;负数相当于向上取整,也相当于舍弃小数位。误差同上,为一个接近分辨率的值。它的偏置和round的情况恰恰相反,正数是具有负方向的偏置,而负数则是具有正方向的偏置,当样本是在正值和负值之间均匀分别是,它没有偏置。

溢出情况

        由于不同舍入模式可以存在进位的情况,所以可能会发生溢出。首先需要说明的,在定点数的舍入中,由于定点数表示的负数范围要比正数的范围大,所以只会产生正方向的溢出而不会产生负方向的溢出。

        例如Q4.2格式范围是-2~1.75,存在1.5/1.75舍入到2的情况,因为Q4.2格式无法表示2,所以发生了溢出;而负数方向的舍入最多就是到-2,所以都可以被正确表示,不会发生溢出。

        据此可以推断,上述6种舍入模式中,只要存在向上舍入情况的都有可能发生溢出,它们是:

  • round:大于等于一半时会向上舍入,所以可能会发生溢出

  • nearest:同上

  • convergent:同上

  • ceil:自身就是向上取整,所以会有可能发生溢出

        剩下的floor和fix它们的正数都是向下取整,所以不会发生溢出现象。

硬件开销

        不同的舍入方式对误差的影响是不一样的,有些的误差大,有些的误差小,是不是误差小的舍入方法就一定很好呢?不是,还是要综合考量硬件开销等因素。比如向下取整floor,只需要丢掉小数部分(或者约定的精度外部分)就可以了,这在硬件上就只需要重新连一下线就可以了,逻辑资源的开销就是0。而round这些方式虽然带来的误差小,但是要做的逻辑判断也多,所以硬件资源消耗也高。

        floor:只要丢掉小数部分(或者约定的精度外部分),相当于重连线,硬件开销很小(可以说是0开销)

image-20240421154533790

        ceil:向上取整,因为丢掉小数部分相当于向下取整,所以向上取整只需要丢掉小数部分,然后加1。特殊情况是整数的情况,此时的向上取整值就是其自身,所以丢掉小数部分后加的不是1而是0。所以硬件开销需要1个加法器来做加法,还需要一个电路来判断是否为整数(即小数部分是否为全0),该电路的输出可以直接用作加法器的一个输入

image-20240421154525056

        fix:向0取整,相当于正数floor,负数ceil。因为正数丢掉小数部分相当于向下取整,负数丢掉小数部分是向上取整,所以正数是丢掉小数部分然后加0;负数则是丢掉小数部分然后+1。特殊情况是整数的情况,此时的取整值就是其自身,所以丢掉小数部分后加的不是1而是0。综合起来就是负的非整数是丢掉小数部分然后加1;其他情况则是丢掉小数部分然后加0。所以硬件开销需要1个加法器来做加法,还需要一个电路来判断是否为负的非整数(即小数部分是否为全0以及符号位为1),该电路的输出可以直接用作加法器的一个输入。

image-20240421154545569

        round:在前面文章我们分析过了,是一个正数时,相当于舍弃小数部分然后加上小数部分的最高位;是一个负数,且小数部分的最高位为1和其他位不为全0时,相当于舍弃小数部分然后加上1,否则是于舍弃小数部分然后加上0。所以硬件开销是一个判断是否最高位为1和其他位不为全0的电路,一个MUX来选择进位值,一个加法电路实现整数部分加上进位值。

image-20240421161504992

        nearest:在前面文章我们分析过了,当小数部分的最高位为0时,相当于整数部分 + 进位值,进位值等于0,即小数部分的最高位;当小数部分的最高位为1时,相当于整数部分 + 进位值,进位值等于1,即小数部分的最高位。综合起来就是,直接用整数部分+小数部分的最高位。所以硬件开销只需要一个加法器。

image-20240421160534835

        convergent:在前面文章我们分析过了,当小数部分的最高位为1且其他位为全0时,相当于整数部分 + 进位值,进位值等于整数部分的最低位;情况情况相当于整数部分 + 进位值,进位值等于小数部分的最高位。所以硬件开销是一个判断是否最高位为1和其他位为全0的电路,一个MUX来选择进位值,一个加法电路实现整数部分加上进位值。

image-20240421161620178

        当然了,以上电路开销仅仅是简单情况下的示意图,随着位宽的增加,不同模式的硬件开销是可能存在区别的,但是大趋势应该不会变。

总结

        综合以上舍入模式的方法、偏置、误差、溢出、电路开销等,总结如下:

2024-04-20_121614

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国科学院地理所牛书丽团队《Global Change Biology 》最新成果!

本文首发于“生态学者”微信公众号! 在全球气候变化的背景下,干旱地区的扩张对生态系统的氮循环产生了深远影响。氮同位素(δ15N)的天然丰度,尤其是土壤中的δ15N,是评估陆地生态系统氮循环动态和氮限制的关…

固定资产定位追踪管理系统

固定资产定位跟踪管理系统是一个利用技术手段对公司资产进行定位、跟踪和管理的系统。它帮助企业实时了解资产的位置、情况和使用情况,提高固定资产管理的效率和准确性。以下是该系统的主要功能和优势:  固定资产识别和识别:系统通过使用识…

springboot大学校园二手书交易APP-计算机毕业设计源码25753

摘 要 在数字化与移动互联网迅猛发展的今天,人们对于图书的需求与消费方式也在悄然改变。为了满足广大读者对图书的热爱与追求,我们倾力打造了一款基于Android平台的图书交易APP。这款APP不仅汇聚了海量的图书资源,提供了便捷的交易平台&…

边缘计算盒子_B100_Jetson Nano (aarch64)开发环境搭建

目录 一、刷机步骤1、搭建刷机环境2、进入刷机模式3、开始刷机 二、系统迁移到TF卡 或者 U盘1、迁移脚本2、提前插入U盘或者TF卡3、 开始迁移 三、搭建miniconda 环境1、下载安装 四、jetpack开发套件环境1、版本查看2、apt 更换国内源3、安装Jetson-stats管理工具 一、刷机步骤…

图纸文档管理新篇章:陕西航沣与三品软件合作 优化研发流程

近日,陕西航沣新材料有限公司与三品软件正式达成合作协议,共同打造高效、智能的图纸文档管理平台。此次合作旨在赋能陕西航沣在高性能碳纤维增强纸基摩擦材料领域的创新与发展,提升企业的核心竞争力。 客户简介 陕西航沣新材料有限公司&…

【通过pnpm创建vite项目】

vue3最新项目技术构建后台管理系统 一、技术要求二、安装pnpm2.1 构建vite三、项目配置3.1 eslint 配置3.2 prettier配置3.3 stylelint配置3.4 配置husky3.5 配置commitlint3.6 pnpm 强制安装四、Element-plus 引入4.1 完整引入4.2 国际化配置4.3 配置别名4.4 Env环境配置4.5 s…

【2024_CUMCM】数据预处理、数据分析、数据可视化

目录 2023-c题-问题1 问题分析 偏度 峰度 箱线图 读图 重采样、降采样、升采样 重采样 降采样 升采样 解题代码 2023-c题-问题1 问题分析 问题说白了就是探究品类和销售量这两个数据他们各自内在联系,根据题意,我们先进行数 据预处理&#…

机器视觉:(1) 初识Roboflow(使用详解一)获取数据集(最新)

一:访问地址 [1] Roboflow官网:官网地址 [2]YOLOv8 项目地址github源码地址 [3]YOLOv8 官方教程官网教程地址 二:获取数据集步骤 1.访问官网地址:进入首页面,点击登录 2.注册过程省略了,按步骤走就可以…

01. 课程简介

1. 课程简介 本课程的核心内容可以分为三个部分,分别是需要理解记忆的计算机底层基础,后端通用组件以及需要不断编码练习的数据结构和算法。 计算机底层基础可以包含计算机网络、操作系统、编译原理、计算机组成原理,后两者在面试中出现的频…

【MySQL】mysqldumpslow工具 -- 总结慢查询日志文件

1. 作用 在平时使用MySQL数据库时,经常进行查询操作,有些查询语句执行的时间非常长,当执行时间超过设定的阈值时,我们称这个查询为慢查询,慢查询的相关信息通常需要用日志记录下来称为慢查询日志,mysqldum…

下载设计免抠元素,就上这6个网站,免费下载!

寻找免费PNG免抠素材网站是创意设计者们探索的重要一环。这些网站提供了丰富的PNG格式素材,去除了背景,方便在不同项目中使用。精心挑选了6个免费PNG免抠素材网站,它们提供了高品质的素材资源,无论是个人设计还是商业项目&#xf…

OpenCV漫水填充函数floodFill函数的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 功能描述 ffloodFill函数是OpenCV库中用于图像处理的一个功能,它用于填充与种子点颜色相近的连通区域。这个函数在很多场景下都非常有用&#x…

AutoHotKey自动热键(七)WINDOWS按键映射与鼠标映射(替换/组合)

该脚本支持简单的按键替换,可以针对某个窗口进行按键替换,还可以对鼠标和键盘进行互相替换,也可以用来禁用一些按键 键盘按键映射 普通按键映射 a::b这样子就直接在全局把所有的a键输入都映射成b键输出 上面这一行在执行过程中相当于拆解成下面两个,第一个是按下,第二个是弹…

【chatgpt消费者偏好】是什么驱动了游客持续旅游意愿?推文分享—2024-07-08

今天推文的主题是【chatgpt&消费者意愿】 第一篇:文章主要研究了什么因素驱动旅游者继续使用ChatGPT进行旅行服务,并从人类拟态的角度探讨了旅游者对ChatGPT的感知和使用意图。第二篇:本文探讨了ChatGPT-4在生成针对TripAdvisor上发布的…

Apache防盗链、网页压缩、网页缓存

目录 网页压缩 类型 示例 动态添加模块操作步骤 重装Apache操作步骤 网页缓存 示例 操作步骤 隐藏版本信息 操作步骤 Apache防盗链 定义 原理 配置防盗链实验环境 实验环境 本地图片盗链示例 操作步骤 防盗链示例 操作步骤 网页压缩 网站的访问速度是由多个…

Linux -- 认识 make/makefile

目录 前言: 什么是 make/makefile? 怎么使用 make/makefile? 依赖关系和依赖方法: 清理: 怎么使用 make? 如何编写多文件的 makefile? 什么是PHNOY? ACM时间 什么是AC…

苹果手机照片变jpg格式该怎么做?这三种不容错过

想知道苹果手机照片变JPG格式的方法吗?如果你的苹果手机系统属于IOS11,那么系统中保存的图片属于HEIC格式。HEIC格式是无法在IOS以外的windows、安卓系统中查看的。如果想要预览,我们需要借助HEIC图片格式转换工具将HEIC转换成兼容性更好的JP…

AI绘画 Stable Diffusion图像的脸部细节控制——采样器全解析

大家好,我是画画的小强 我们在运用AI绘画 Stable Diffusion 这一功能强大的AI绘图工具时,我们往往会发现自己对提示词的使用还不够充分。在这种情形下,我们应当如何调整自己的策略,以便更加精确、全面地塑造出理想的人物形象呢&a…

Python 神器:wxauto 库——解锁微信自动化的无限可能

📝个人主页🌹:誓则盟约 ⏩收录专栏⏪:机器学习 🤡往期回顾🤡:“探索机器学习的多面世界:从理论到应用与未来展望” 🌹🌹期待您的关注 🌹&#x1f…

Mac的系统数据怎么删除 cleanmymac会乱删东西吗 cleanmymac有用吗

作为一款专业级的苹果电脑清理软件,CleanMyMac可以精准识别系统垃圾,有效防止Mac系统数据被误删。软件可以深入系统底层,清理无用的系统数据,优化苹果电脑设置,提升Mac系统性能。有关Mac的系统数据可以删吗&#xff0c…