如何将两个定点数相乘?

2023-12-22

我目前正在尝试找出如何以定点表示形式将两个数字相乘。

假设我的数字表示如下:

[SIGN][2^0].[2^-1][2^-2]..[2^-14]

就我而言,数量10.01000000000000 = -0.25.

例如我会怎么做0.25x0.25 or -0.25x0.25 etc?

希望您能帮忙!


You should use 2's complement representation instead of a seperate sign bit https://en.wikipedia.org/wiki/Signed_number_representations#Signed_magnitude_representation_(SMR). It's much easier to do maths on that, no special handling is required. The range is also improved because there's no wasted bit pattern for negative 0. To multiply, just do as normal fixed-point multiplication. The normal Q2.14 format will store value x/214 for the bit pattern of x, therefore if we have A and B then

So you just need to multiply A and B directly then divide the product by 214 to get the result back into the form x/214 like this

AxB = ((int32_t)A*B) >> 14;

需要舍入步骤才能获得最接近的值。您可以在中找到执行此操作的方法Q数字格式#数学运算 http://en.wikipedia.org/wiki/Q_%28number_format%29#Math_operations。舍入到最接近的最简单方法就是添加回最后移出的位(即第一个小数位),如下所示

AxB = (int32_t)A*B;
AxB = (AxB >> 14) + ((AxB >> 13) & 1);

您可能还想阅读这些

  • 定点运算 http://en.wikipedia.org/wiki/Fixed-point_arithmetic.
  • 模拟定点除法/乘法 https://stackoverflow.com/q/5028986/995714
  • C# 中的定点数学? https://stackoverflow.com/q/605124/995714

用 2 位可以表示 [-2, 1] 的整数范围。因此,使用 Q2.14 格式,-0.25 将存储为11.11000000000000。使用 1 个符号位只能表示 -1、0、1,并且这会使计算更加复杂,因为您需要拆分符号位,然后在最后将其组合回来。

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

如何将两个定点数相乘? 的相关文章

  • java中双精度乘法的精度?

    java中双精度值的乘法运算符的保证精度是多少 例如 2 2 100 是 220 00000000000003 但 220 是双精度数 220 00000000000003 是 220 之后的下一个双精度值 乘法工作正常 但是2 2不能精确
  • 如何将列表中的各个元素与数字相乘?

    S 22 33 45 6 21 6 51 8 P 2 45 Here S是一个数组 我如何将其相乘并得到该值 SP 53 9 80 85 111 72 52 92 126 91 在 NumPy 中这非常简单 import numpy as
  • 进行定点数学运算的最佳方法是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我需要为没有 FPU 的
  • ListView 和带有倒计时器的项目

    我的 Listview 有问题 我想为所有 ListView 的项目设置一个倒计时器 并且我已经在 google 上搜索了解决方案 但它无法正常工作 问题是 ListView 重用 回收 视图 并且我总是得到错误的项目时间 我在视图中使用了
  • numpy 中有没有一种方法可以将数组中的每个元素相乘?

    我想将 numpy 数组中的所有元素相乘 如果有一个像这样的数组 1 2 3 4 5 我想得到的值1 2 3 4 5 我通过自己的方法尝试了这一点 但是数组的大小非常大 计算需要很长时间 因为我使用的是 numpy 如果 numpy 支持此
  • C# 中的定点数学

    C 中有一些关于定点数学的好资源吗 我见过这样的事情 http 2ddev 72dpiarmy com viewtopic php id 156 和这个 进行定点数学运算的最佳方法是什么 以及一些关于小数是真正定点还是实际上浮点的讨论 更新
  • Numpy 融合乘法和加法以避免浪费内存

    是否可以将两个 ndarray A 和 B 相乘并将结果添加到 C 而无需为 A 乘以 B 创建一个大型中间数组 Numpy 对于 C A 乘 B 的情况有 out 关键字参数 numpy multiply A B out C C A 乘以
  • opencv - 图像乘法

    嗨 我正在尝试玩一点 Mat 课 我想在两个图像之间进行乘积元素明智 MATLAB 的 c opencv 端口不相乘 这是我的代码 include
  • 没有 64 位临时值的定点乘法

    您好 我正在为嵌入式系统实现一些定点数学内容 并且我正在尝试执行两个 16 16 定点数的乘法而不创建 64 位临时数字 到目前为止 这是我想出的生成最少指令的代码 int multiply int x int y int result l
  • 模拟定点除法/乘法

    我正在编写一个定点类 但遇到了一些障碍 乘法 除法部分 我不知道如何模拟 我对部门操作员进行了非常粗暴的批评 但我确信这是错误的 到目前为止 它看起来是这样的 class Fixed Fixed short int value short
  • 正则表达式乘法

    在我询问之前 我环顾了一段时间 但我似乎找到了很多如何使用正则表达式进行电子邮件和货币转换的方法 但没有找到关于将数字与设定值相乘的方法 本质上 我有一个货币值字段 127 25GBP 需要转换为 165 42 只有两位小数 没有货币指示器
  • cin 输入(输入是 int)当我输入一个字母时,它不会打印一次错误的内容,而是打印一次正确的内容,然后在循环的其余部分中打印

    我正在制作一个乘法练习程序 正如我的标题所示 如果我在控制台中输入一个字母而不是数字 它将显示第一个字母正确 但其余字母错误 即使你不碰键盘 它仍然会输出不正确的结果 ans table i std cout lt lt table lt
  • R 将特定行和列乘以常数

    我有以下数据 type lt c 1 4 year1 lt c 1 4 year2 lt c 1 4 year3 lt c 1 4 data lt data frame type year1 year2 year3 我想将年份列中的底部两行
  • 如何将两个定点数相乘?

    我目前正在尝试找出如何以定点表示形式将两个数字相乘 假设我的数字表示如下 SIGN 2 0 2 1 2 2 2 14 就我而言 数量10 01000000000000 0 25 例如我会怎么做0 25x0 25 or 0 25x0 25 e
  • 如今何时使用定点

    对于密集的数字运算 我正在考虑使用定点而不是浮点 当然 定点类型的大小有多少字节 它将在什么 CPU 上运行 如果我可以使用 对于英特尔 MMX 或 SSE 或任何新出现的东西 这都很重要 我想知道现在浮点运行速度比以往任何时候都快 是否值
  • Sympy:指数相乘而不是总和指数相乘

    我正在搜索如何告诉 SymPy 使用指数乘法而不是总和的指数 也就是说 它当前给我 exp a b 我想要得到 exp a exp b 一定有一个相当简单的方法 但我似乎找不到 你可以使用expand http docs sympy org
  • 奇怪的乘法结果

    在我的代码中 我在 C 代码中进行了乘法运算 所有变量类型均为 double f1 0 f1 rot 0 xu 0 f1 rot 1 yu 0 f1 1 f1 rot 0 xu 1 f1 rot 1 yu 1 f1 2 f1 rot 0 x
  • Numpy 3d 数组矩阵乘法函数

    假设我有一个 ndarray 形状为 m n n 的 W 和维度为 m n 的向量 C 我需要按以下方式将这两个相乘 result np empty m n for i in range m result i W i C i 如何以矢量化方
  • x86_64:IMUL 比 2x SHL + 2x ADD 更快吗?

    当查看 Visual Studio 2015U2 生成的程序集时 O2 发布 模式我看到这段 手工优化 的 C 代码被翻译回乘法 int64 t calc int64 t a return a lt lt 6 a lt lt 16 a 集会
  • 警告:“将‘D’的乘法及其转置括起来,以确保结果是埃尔米特式的。”

    正如您在上面的屏幕截图中看到的 我的 Matlab m 文件代码中有以下表达式 K P D D P 其中 P 是一个 nxn 矩阵 D 是一个 nx1 列向量 n 4 如果重要的话 为什么我会收到此警告消息 如果我在那里使用或不使用括号会发

随机推荐

  • 基于 SAML 断言的 SAML2 身份验证和授权

    我在用着spring security saml2 service provider针对 SAML IdP 验证我的 SpringBoot Web 应用程序 这有效 我还可以使用 REST 控制器访问 SAML 断言 Authenticat
  • H2数据库:使用jdbcTemplate插入记录时,列“ID”不允许为NULL

    我使用 hibernate 的 hbm2ddl 自动生成模式 这是我的域名 Entity public class Reader Id GeneratedValue strategy GenerationType AUTO Long id
  • 推送通知加密错误

    我在 PHP Laravel 应用程序中使用 Push Notifs 我创建了一个 pem 文件并对其进行了测试 在我的开发机器上使用它时 它可以正确推送到移动设备 当我现在将整个项目推送到生产服务器并启动 Pushnotif 调用时 我收
  • Spark:reduce和reduceByKey之间的语义差异

    在 Spark 的文档中 它说 RDDs 方法reduce http spark apache org docs latest api scala index html org apache spark rdd RDD需要一个结合与交换的二
  • 居中裁剪图像以适当的尺寸在 ImageView 上设置

    我正在使用相机 API 来拍照 我必须根据我的图像视图大小打开不同尺寸的相机 我正在关注我们在 Android sdk sample adroid 18 中获得的名为 ApiDemo 的示例项目 我所做的更改不是在 setcontentvi
  • 检查日期时间变量是今天、明天还是昨天

    我不知道如何检查日期时间变量是今天 明天还是昨天 我在类成员中没有找到方法 final now DateTime now final today DateTime now year now month now day final yeste
  • Highcharts - 柱形图重画动画

    我正在尝试使用新的数据数组更新现有的数据系列并调用redraw完成后即可运行 虽然这工作得很好 但我不太满意 因为我想要一种增长 收缩的过渡 我见过一个Highcharts 的示例 http www highcharts com studi
  • Angular 7:自定义异步验证器

    我正在尝试为我的注册表单创建一个自定义异步验证器 它会检查电子邮件是否已存在 如果电子邮件不存在 后端返回 404 如果存在 则返回 200 无法更改此旧代码 我找到了几个教程 但没有找到使用最新 rxjs 库的教程 我创建了这个验证类 e
  • Play 2.2 应用程序在 Heroku 上崩溃

    从 Play 2 0 4 迁移到 Play 2 2 0 后 在 Heroku 上部署时出现此错误 Oct 15 13 23 12 heroku web 1 Starting process with command target unive
  • 检测单个图像中的多个图像

    我需要帮助来识别边界并将图像与原始图像进行比较 我需要关于如何通过处理或 matlab 或任何初学者实现这一目标的指导 例如 看下图 原图 The Multiple Image 您展示的 多图像 很容易使用简单的图像处理来处理 不需要模板匹
  • 在我的自定义 android 视图中添加自定义字符串属性

    我有一个从表布局派生的自定义视图 我需要声明 String 属性 Title 如下所示
  • Android 3.1 构建 gradle 4.4 配置项目 ':app' 时发生错误

    当我使用模拟器 api26 错误时 我没有使用 kotlin 因为不是导入 kotlin 而是构建 api gt 26 错误 gt kotlin KotlinNullPointerException 无错误消息 com android bu
  • MySQL大量“SET autocommit=0/1”查询

    我正在我们的系统上运行一些负载测试 我注意到正在执行大量 SET autocommit 0 和 SET autocommit 1 查询 1 分钟内大约有 25 000 个 我试图找出造成这种情况的原因以及如何消除它 我们使用以下技术 MyS
  • Qt Creator 将其设置保存在哪里?

    我想找到 Qt Creator 保存所有设置 文本编辑器首选项 语法突出显示等 的文件夹 以便我可以备份它们 有人知道他们在哪里吗 See QtCreator 快速浏览 http doc qt io qtcreator creator qu
  • 如何从XML获取Dataset中的多个表

    我正在读取数据集中的 XML 以下是我的 XML 结构 XML
  • Spring Boot - 从 webjar 覆盖索引页面

    在我的项目中 我使用 swagger ui 库 它在类路径的根目录中有 index html 文件 以这样的方式这个index html当我点击 root url 时 它会成为我的应用程序的起始页 但我想使用我的自定义 Groovy 模板i
  • 为什么需要内存对齐?

    我知道这个问题已经被问过一千次了 我已经阅读了每一个答案 但我仍然不明白 我的 RAM 模型可能存在一些根本性错误 使我无法理解任何答案 我从互联网上得到了所有这些小信息 但我就是无法将它们联系起来 以下是我认为到目前为止所知道的 以 IA
  • NS通知中心问题

    有没有办法知道一个对象是否已经注册为特定通知的观察者 在我的实现中 我必须动态添加和删除观察者 由于某种原因 存在一个随机问题 侦听器收到两次相同的通知 我知道我必须检查我的编码 但如果我知道这些信息 修复起来会更容易 谢谢 否 无法查询此
  • R、日期格式不一致

    我有一个日期变量 它最初来自 Excel 然而 它是如此异类 尽管在 Excel 中所有内容看起来都像 yyyy mm dd 但在 R 中读取时 变量看起来像 person 1 39257 person 2 2015 2 20 person
  • 如何将两个定点数相乘?

    我目前正在尝试找出如何以定点表示形式将两个数字相乘 假设我的数字表示如下 SIGN 2 0 2 1 2 2 2 14 就我而言 数量10 01000000000000 0 25 例如我会怎么做0 25x0 25 or 0 25x0 25 e