2.4 定点除法运算

news2024/11/28 6:41:24

 

学习目标:

学习如何实现一个基于余数查商法的定点除法运算,并能够正确地进行除法计算,包括处理舍入误差和溢出等问题。具体要求包括:

  1. 熟悉定点数的表示方法和定点数的基本运算法则,理解定点除法运算的基本概念和原理。

  2. 学习余数查商法的算法流程和计算方法,并能够手动计算出除法的结果。

  3. 熟悉处理舍入误差和溢出的方法,能够正确处理各种异常情况。

  4. 使用Verilog HDL或其他硬件描述语言编写定点除法运算的模块,并进行仿真和测试,确保其能够正确地进行除法计算。

  5. 进一步优化定点除法运算的性能,例如采用查表法、位移法和乘法法等高效的计算方法,或者使用流水线和并行计算等方式提高运算速度。

  6. 实践中遇到的问题进行记录和总结,加深对定点除法运算的理解和掌握。

 学习步骤:

  1. 了解基本概念和原理:首先,我会查阅相关的文献资料,了解定点除法运算的基本概念、原理和算法流程。我会学习定点除法运算的算法原理,例如余数-查商法等。

  2. 学习计算方法:在了解了基本原理后,我会开始学习具体的计算方法,包括如何进行数值计算、处理舍入误差和溢出等问题。我还会学习如何应用查表法、位移法和乘法法等常见的计算方法,以及如何在实际应用中选择合适的计算方法。

  3. 实践操作:在掌握了基本的理论知识和计算方法后,我会开始进行实践操作。这包括编写代码进行仿真和测试,调试错误并进行性能优化等。

  4. 深入研究:如果我想进一步深入研究定点除法运算,我会尝试理解其底层原理和优化方法。我会学习如何通过硬件优化、算法改进等方式提高算法的效率和精度。

  5. 不断练习和提高:最后,我会不断练习和提高自己的定点除法运算能力。我会尝试解决更加复杂的问题,学习新的技术和方法,以提高自己的水平。

 2.4.1 原码除法算法原理

原码除法是一种二进制数的除法运算算法。其基本原理是将除数和被除数都转换成原码形式,然后进行一系列的移位和比较操作,最终得到商和余数。下面是原码除法算法的具体原理:

  1. 判断除数和被除数的符号,如果符号相同则结果为正,如果符号不同则结果为负。

  2. 将除数和被除数都转换成原码形式,即符号位为1表示负数,为0表示正数,其余位表示数值。例如,+3的原码为0011,-3的原码为1011。

  3. 对除数进行左移操作,使其最高位为1,直到其大于或等于被除数的绝对值。同时记录下左移的位数k。

  4. 进行一次减法操作,得到一个余数r。如果r小于除数,则继续进行一次左移和减法操作,直到r大于或等于除数。同时,记录下余数的位数i。

  5. 计算商的原码,即将k-i作为符号位,将商的绝对值作为数值位。

  6. 判断商和余数的符号是否一致,如果不一致,则需要进行补码转换。

需要注意的是,在进行原码除法时,可能会出现除数为0或被除数为最小负数的情况,需要进行特殊处理。此外,原码除法的计算速度较慢,因此在实际应用中,一般使用更为高效的补码除法算法。

 恢复余数法我的理解:

恢复余数法是一种常见的除法算法,其基本思想是通过不断减去除数,直到减不下为止,得到商和余数的值。具体来说,其计算流程如下:

  1. 用除数去减被除数,如果结果小于0,则说明当前的商的最高位应该为0,被除数需要加上一个除数,然后再次用除数去减它。

  2. 如果结果大于等于0,则说明当前的商的最高位应该为1,被除数不需要做任何处理,继续用除数去减它即可。

  3. 重复执行步骤1和步骤2,直到被除数小于除数为止,此时得到的商和余数就是除法的结果。

需要注意的是,恢复余数法对于有符号数的除法计算会产生一些问题,例如在除数和被除数的符号相反时,商的符号会出现问题。因此,在实际应用中,通常会采用其他更加高效和稳定的算法,例如原码除法或补码除法等。

 

 加减交替法我的理解:

加减交替法是一种常见的定点除法算法,其基本思想是通过不断地加减除数的倍数来逼近被除数,直到找到商和余数的值。具体来说,其计算流程如下:

  1. 将被除数和除数的绝对值都转化为二进制补码形式。

  2. 将商和余数的初始值都设置为0,并记录被除数的符号。

  3. 从高位开始依次处理每一位,对于每一位执行以下步骤:

    • 将余数左移1位,并将被除数的当前位移入余数的最低位,得到当前的余数值。

    • 如果余数值大于等于除数的绝对值,则说明当前的商位应该为1,余数需要减去除数的绝对值,否则当前的商位应该为0,余数不需要做任何处理。

    • 如果当前正在处理被除数的符号位,或者当前余数值为0,则跳过下一位。

    • 如果余数为负数,则说明商的当前位应该为0,并将余数加上除数的绝对值;如果余数为正数,则说明商的当前位应该为1,并继续进行下一位的处理。

  4. 重复执行步骤3,直到处理完所有位数,此时得到的商和余数就是除法的结果。

需要注意的是,加减交替法虽然相对简单,但是对于较大的除数和被除数,计算量会非常大,效率较低。因此,在实际应用中,通常会采用其他更加高效和稳定的算法,例如原码除法、补码除法或者高精度除法等。

 

 两种方法的异同——我的理解

原码除法和补码除法是两种常见的定点除法算法,它们在计算过程和结果上有一些异同和优缺点。

  1. 异同点:
  • 计算方式不同:原码除法采用除数和被除数的原码形式进行计算,补码除法采用补码形式进行计算。

  • 商和余数的符号位不同:原码除法的商和余数的符号位和被除数的符号位一致,而补码除法的商和余数的符号位和除数的符号位一致。

  • 计算结果不同:在被除数为负数且除数为正数的情况下,原码除法和补码除法的商和余数可能不同。

  1. 优缺点:
  • 原码除法的优点在于实现简单,算法清晰,容易理解。但是其缺点在于商和余数的符号位与被除数一致,容易出现符号位溢出和计算错误的问题,同时在被除数为负数且除数为正数的情况下,商和余数的计算结果与补码除法不同。

  • 补码除法的优点在于符号位的处理更加合理,结果更为准确和稳定,同时在被除数为负数且除数为正数的情况下,商和余数的计算结果与补码除法一致。但是其缺点在于实现相对复杂,需要进行多次补码转换和符号位的处理。

综合来说,在实际应用中,选择原码除法还是补码除法应该根据具体情况来决定,需要根据实际需求和系统架构的要求来进行选择。

 

 2.4.2 并行除法器

2.4.1 可控加法/减法(CAS)单元

可控加法/减法单元是一种常用的数字电路组件,它可以实现带符号整数的加法和减法运算。该单元的基本结构包括两个输入端口和一个控制端口,其中一个输入端口用于输入操作数,另一个输入端口用于输入加/减标志位,控制端口用于控制加/减操作。

可控加法/减法单元的实现通常采用门电路和选择器电路的组合。其中,门电路用于实现加法和减法的基本逻辑操作,选择器电路用于选择加法或减法的结果。在具体的实现中,可以采用多种选择器电路,如多路选择器、带使能端的选择器等。

可控加法/减法单元的主要优点是它可以实现加法和减法的转换,从而减少了电路的复杂度和成本。同时,它还可以被用作其他数字电路的基本组件,如乘法器、除法器等。

需要注意的是,在使用可控加法/减法单元时需要注意数据精度的保证和溢出的处理。此外,对于某些特殊的应用场景,如高速计算和数字信号处理等,也需要对可控加法/减法单元的性能进行优化和提高。

4.2.2 加减交替的阵列除法器

加减交替法也可以用于阵列除法器的设计中,称为加减交替的阵列除法器。它与串行除法器和并行除法器不同,采用的是一种分块计算的方式,可以加速除法的运算速度。

加减交替的阵列除法器的基本思想是,将除数和被除数分成若干个块,并将每个块分别输入到加减器中进行计算。每次计算后,将计算得到的商的低位保存到寄存器中,并将余数的高位送入下一轮计算中,以此类推,直到计算得到最终的商和余数。

在具体的实现中,加减交替的阵列除法器通常采用一个由多个可控加法/减法单元组成的阵列。在计算商和余数的过程中,加减交替的阵列除法器会将除数和被除数分成多个块,并按照从高到低的顺序输入到阵列中。在每个块的计算过程中,加减交替的阵列除法器会根据当前的加减标志位选择加法或减法运算,并通过选择器电路将计算得到的商和余数的低位保存到寄存器中。

加减交替的阵列除法器的主要优点是它能够加速除法的计算速度,并且可以并行计算每个块的商和余数,从而提高整体的计算效率。同时,它还可以采用多种优化技术,如流水线技术、交织计算等,以进一步提高计算速度。

需要注意的是,在使用加减交替的阵列除法器时,需要注意数据精度的保证和溢出的处理。此外,对于一些特殊的应用场景,如高速计算和数字信号处理等,也需要对加减交替的阵列除法器的性能进行优化和提高。

总点:

定点除法运算的重点:

  • 理解定点数的表示方法和定点除法的基本原理
  • 掌握恢复余数法和加减交替法两种基本的定点除法算法
  • 熟悉定点除法中的补码运算和补码补偿运算方法
  • 熟悉定点除法的位数要求和舍入规则
  • 理解并行除法器的基本结构和实现原理

定点除法运算的难点:

  • 定点除法算法的理解和掌握需要一定的数学基础和逻辑思维能力
  • 定点除法中的补码运算和补码补偿运算较为复杂,需要掌握相关的计算方法
  • 在定点除法的实现过程中需要注意位数溢出和舍入误差的问题

定点除法运算的易错点:

  • 对于恢复余数法,需要注意余数的计算方法以及舍入规则的选择
  • 对于加减交替法,需要注意运算顺序和位数要求
  • 在定点除法的实现过程中,需要注意位数溢出和舍入误差的问题,并进行相应的处理

对于并行除法器和可控加法/减法单元,其重点和难点在于理解其基本结构和实现原理,并掌握相应的计算方法和技巧。同时,其易错点在于对于位数要求和舍入规则的处理,需要严格按照算法要求进行处理,避免出现误差和溢出的问题。

 

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

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

相关文章

逻辑回归评分系统(mimic数据集)

1.读取数据与数据处理 为什么不对数据进行标准化? 我们制作的评分卡,评分卡是要给医务人员们使用的基于病人的化验结果打分的一张卡片,而为了制作这张卡片,我们需要对我们的数据进行一个“分档”,比如说,…

大型Saas系统的权限体系设计(一)

X0 概述 在2B系统开发中,权限体系设计是绕不开的问题。最简单的当然是RBAC模型,只要通过用户、角色、权限几个有限的概念,就可以建立起一套基本可用的权限体系。再复杂一点,可以增加角色的层级概念,使得角色的配置更高…

验证回文串

题目:验证回文串 思路: 这段代码是一个判断字符串是否为回文的函数。它接受一个 string 类型的参数 s,并依次执行两个步骤: 首先对字符串进行预处理: 将大写字母转换成小写字母;移除非字母数字字符。 然…

平均10870元!2023一季度居民可支配收入公布(文末附最新招聘岗位)

今天是五一假期的第一天,暂别职场的打工人已经开始扎入人从众中放肆玩乐了,小编已经流下了羡慕的泪水。不过,今年的五一除了人流量上暴涨之外,出行成本也没被少吐槽,机票咱就不说了,酒店民宿的涨幅简直到了…

医院信息系统HIS源码——接口技术:RESTful API + WebSocket + WebService

云HIS系统采用SaaS软件应用服务模式,提供软件应用服务多租户机制,实现一中心部署多机构使用。相对传统HIS单机构应用模式,它可灵活应对区域医疗、医疗集团、医联体、连锁诊所、单体医院等应用场景,并提升区域内应用的标准化与规范…

fc坦克大战游戏完美复刻

文章目录 一、 介绍二、 制作基本物体三、 控制玩家坦克移动、转向四、 子弹脚本、爆炸脚本五、 敌人AI寻路算法六、 坦克生成点脚本七、 用链表实例化地图八、 玩家游戏控制器脚本九、 添加音效十、 资源包 一、 介绍 儿时经典游戏《坦克大战》完整复刻 发射子弹、生成敌人、…

「欧拉定理」[SDOI2008]仪仗队

[SDOI2008]仪仗队 https://ac.nowcoder.com/acm/problem/20313 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练。 仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线所…

Golang每日一练(leetDay0050)

目录 147. 对链表进行插入排序 Insertion Sort List 🌟🌟 148. 排序链表 Sort List 🌟🌟 149. 直线上最多的点数 Max Points On A Line 🌟🌟🌟 150. 逆波兰表达式求值 Evaluate Reverse …

DDS基本原理与FPGA实现

DDS基本原理与FPGA实现 定义:DDS是指DDS信号发生器,采用直接数字频率合成技术。是一种新型的频率合成技术,具有相对带宽大,频率转换时间短、分辨率高和相位连续性好等优点。较容易实现频率、相位以及幅度的数控调制,广…

服务运营| Healthcare Management Science 近期文章精选

作者:李舒湉 王畅 (一) Screening for preclinical Alzheimer’s disease: Deriving optimal policies using a partially observable Markov model nen Dumlu Z, Sayın S, Grvit İ H. Screening for preclinical Alzheimer’s disease: …

UG NX二次开发(C#)-显示-更改对象颜色

文章目录 1、前言2、UG NX中的更换对象颜色的功能3、采用UG NX二次开发实现颜色修改3.1 采用直接赋值对象颜色不能直接更改对象颜色3.2 采用NewDisplayModification的方法如下:1、前言 当一个三维模型展现在我们面前时,总会有颜色赋予三维模型的对象上,比如红色、蓝色、银灰…

工具链与其他-移动端网络优化的指标和策略

目录 网络指标 一个请求的时间消耗 页面加载 常见性能指标 网络优化策略 缓存 压缩 请求合并 离线包 预加载(前端大流量数据) 网络指标 一个请求的时间消耗 一个请求的发生到返回回来;有3部分时间 1.Scheduling(排队&…

初识C++之异常

目录 一、C中的常用处理错误方式 二、C异常的概念 1. throw 2. catch 3. try 三、异常的使用 1. 异常的抛出和捕获 1.1 异常的抛出和匹配原则 1.2 在函数调用链中异常栈展开匹配原则 四、异常体系 1. 自定义异常体系 2. C中的异常体系 五、 异常安全 六、异常规范…

Unity 热更新基础HybridCLR:Windows平台使用(HybridCLR手记二)

项目是根据官网的示例工程进行修改的,版本参数如下: unity:2021.2.20 wolong:v2.1.0 il2cpp_plus:v2021_2.1.0 ------------------------------------------------------------- 1、安装:参考:第一篇文章Unity 热…

pytest - Getting Start

前言 项目开发中有很多的功能,通常开发人员需要对自己编写的代码进行自测,除了借助postman等工具进行测试外,还需要编写单元测试对开发的代码进行测试,通过单元测试来判断代码是否能够实现需求,本文介绍的pytest模块是…

虚幻图文笔记:Substance Painter通过USD格式导入UE5的工作流

什么是USD格式 USD即Universal Scene Description,是著名的Pixar公司研发的一种开源的3D 场景说明和文件格式,如其名所示,相较于传统的FBX、Obj等3D格式,USD的具有更好的通用性和扩展性,现在已被非常多的厂商和平台所…

使用树莓派(zero2w + Camera Module 3 支持自动对焦 1200 万像素)拍照

拍照硬件 Raspberry Pi Camera Module 3Raspberry Pi Zero 2 W 1. 注意排线连接方向 2. 烧录系统 3. 进行系统更新需要联网,注意只支持最新的bullseye系统。每条指令大概需要10 分钟。 sudo apt-get update -y sudo apt-get upgrade -y4. 拍摄一张全像素的JPEG图像…

自己做小程序开个社区团购可行吗?

在如今的社交化时代,随着社区经济的发展,越来越多的人开始探索社区团购的商业模式。而随着小程序的普及,自己开发一个社区团购小程序也成为了一种可能。但是,自己做小程序开个社区团购真的可行吗?我们来一起分析一下。…

Spring整合MybatisJunit单元测试

Spring整合Mybatis&Junit单元测试 1. Spring整合Mybatis【重点】1.1 思路分析问题导入1.1.1 MyBatis程序核心对象分析1.1.2 整合MyBatis 1.2 代码实现【前置工作】【第一步】导入Spring整合Mybatis依赖【第二步】创建JdbcConfig配置DataSource数据源【第三步】创建MybatisC…

【ARMv8 编程】A64 内存访问指令——内存加载指令

与所有先前的 ARM 处理器一样,ARMv8 架构是一种加载/存储架构。这意味着没有数据处理指令直接对内存中的数据进行操作。数据必须首先被加载到寄存器中,修改,然后存储到内存中。该程序必须指定地址、要传输的数据大小以及源或目标寄存器。有额…