尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ISP图像处理中大数乘法溢出处理(三)
工具函数 132×32 乘法输出 64 位结果四分 16‑bit 拆分乘法纯 32 位运算原理拆分所有子项都是 16bit ×16bit结果最大 32bit不会溢出 32 位。代码实现#include stdint.h /* 高低双32bit字模拟64位无符号数 */ typedef struct { uint32_t hi; uint32_t lo; } U64Pair; /** * brief 两个uint32相加输出结果进位 */ static void AddU32(uint32_t a, uint32_t b, uint32_t *sum, uint32_t *carry) { *sum a b; *carry (*sum a) ? 1U : 0U; } /** * brief 64位无符号加法 z x y */ static U64Pair U64_Add(U64Pair x, U64Pair y) { U64Pair z; uint32_t sum0, c0, sum1, c1; AddU32(x.lo, y.lo, sum0, c0); AddU32(x.hi, y.hi, sum1, c1); AddU32(sum1, c0, z.hi, c1); z.lo sum0; return z; } /** * brief uint32 × uint32 →64位结果(U64Pair) * 16bit四分拆分乘法全程无任何64位原生类型 */ static U64Pair Mul32x32(uint32_t a, uint32_t b) { U64Pair res; uint32_t a0 a 0xFFFFU; uint32_t a1 a 16U; uint32_t b0 b 0xFFFFU; uint32_t b1 b 16U; uint32_t p00 a0 * b0; uint32_t p01 a0 * b1; uint32_t p10 a1 * b0; uint32_t p11 a1 * b1; uint32_t mid_sum, mid_carry; AddU32(p01, p10, mid_sum, mid_carry); /* ---低32位运算: lo p00 (mid_sum 16) --- */ uint32_t mid_shifted mid_sum 16U; uint32_t lo_carry; AddU32(p00, mid_shifted, res.lo, lo_carry); /* ---高32位分步累加携带进位杜绝溢出丢失 --- */ uint32_t h_sum, h_carry; // part A: mid_sum 16 h_sum mid_sum 16U; // part B: mid_carry 16 AddU32(h_sum, (mid_carry 16U), h_sum, h_carry); // part C: p11 AddU32(h_sum, p11, h_sum, h_carry); // part D: lo_carry AddU32(h_sum, lo_carry, res.hi, h_carry); /* h_carry 此时一定等于0因为32×32乘积最高64bit */ return res; }工具函数 264 位被除数 (U64Pair) ÷ 32 位除数 → 32 位商二进制移位‑减法长除法经典 shift‑subtract 长除法完全可以直接映射成 Verilog 流水线硬件无任何乘法、无 64 位变量。代码实现/** * brief 64位无符号被除数 ÷32位除数向下取整返回32bit商 * param num 被除数 {hi,lo} * param den 除数 den0den不能等于0 */ static uint32_t Div64By32(U64Pair num, uint32_t den) { uint32_t quotient 0U; uint32_t rem_hi num.hi; uint32_t rem_lo num.lo; uint32_t carry; for(int32_t i 63; i 0; i--) { /* 余数整体左移1bit */ carry rem_lo 31U; rem_lo rem_lo 1U; rem_hi (rem_hi 1U) | carry; quotient quotient 1U; /* ✅修复后正确判断64bit余数 32bit除数 */ if((rem_hi ! 0U) || (rem_lo den)) { /* 执行余数 余数 - den */ if(rem_lo den) { rem_lo - den; } else { rem_lo (0xFFFFFFFFU - den) rem_lo 1U; rem_hi - 1U; } quotient | 1U; } } return quotient; } /** * brief SafeMulDiv_No64 floor(A*B/C) * 纯32位运算无uint64_t通用安全乘法永不溢出 * param A total 直方图总和 * param B ratio 百分比 * param C divisor 除数直方图场景填100U */ static uint32_t SafeMulDiv_No64(uint32_t A, uint32_t B, uint32_t C) { U64Pair product Mul32x32(A, B); return Div64By32(product, C); } /* 四舍五入扩展版本(直方图抗闪烁可选) */ static uint32_t SafeMulDiv_Round_No64(uint32_t A, uint32_t B, uint32_t C) { U64Pair product Mul32x32(A, B); U64Pair add; add.hi 0U; add.lo C / 2U; product U64_Add(product, add); return Div64By32(product, C); }
RELATED

相关推荐

llama.cpp + DeepSeek-Harness 构建本地大模型推理与Agent智能体系统

llama.cpp + DeepSeek-Harness 构建本地大模型推理与Agent智能体系统

前言 llama.cpp 是本地大模型推理的高效后端引擎,而 LM Studio 则通过图形化界面与 API 服务,对 llama.cpp 的 GGUF 模型格式提供了深度集成与封装,显著降低了本地模型的部署与调用门槛。DeepSeek-Harness 是 DeepSeek AI 推出的开源 Agent 智…

📅 2026/10/22 13:31:58
自托管AI软件工厂:基于LLM与沙盒化智能体的安全自动化开发实践

自托管AI软件工厂:基于LLM与沙盒化智能体的安全自动化开发实践

1. 先搞清楚“自托管、沙盒化、智能体化软件工厂”到底要解决什么问题如果你正在研究如何把大语言模型(LLM)和智能体(Agent)技术整合到自己的开发流程里,并且希望整个过程能完全掌控在自己手里,那么这个“自…

📅 2026/10/23 7:40:39
C语言基础知识2

C语言基础知识2

关键字:C语言中有一批保留的名字的符号,如:int,if,return,这些被称为保留字或者关键字。在创建标识符时不崩和关键字重复,并且关键字也不是自己能创建的,因为关键字具有特殊意义&…

📅 2026/10/23 11:23:53
MORE NEWS

更多资讯

📰

莱西电工证培训良心建议:学历不高怕报不上名?实话告诉你怎么破局

莱西电工证培训良心建议:学历不高怕报不上名?实话告诉你怎么破局 你是不是也这样?学历不高,怕报不了电工证?别急,我来告诉你怎么搞定。在莱西电工证培训这条路上,确实有很多人因为学历问题而犹豫不决,但这不代表你就没机会。下面我会从实际出发,告诉…

📰

密山市电工证怎么复审 内部消息告诉你怎么搞定

密山市电工证怎么复审 内部消息告诉你怎么搞定 证书过期了不知道怎么复审延期,这种事在密山市电工圈里太常见了。尤其是那些在工地、工厂一线干活的电工,一忙起来就容易忽略证书有效期,结果到头来证过期了,活没法干,工资也拿不到。 内部消息…

📰

特种作业a证考试内容及合格标准多久拿证怎么避坑

特种作业a证考试内容及合格标准多久拿证怎么避坑 不知道去哪报名怕被中介坑?特种作业a证考试内容及合格标准多久拿证怎么避坑,成了很多新手最头疼的问题。尤其在驻马店这样的地级市,信息不对称严重,不少工人拿着中介推荐的“包过班”报名,结果花了钱、…

📰

大庆电工证在哪办理?学历不高怕报不上名?考前押题全攻略

大庆电工证在哪办理?学历不高怕报不上名?考前押题全攻略 你是不是也觉得学历不高,担心自己连电工证都报不上名?别急,大庆电工证在哪办理其实一点都不难,关键是你得知道怎么操作。今天咱们就聊聊这个事,特别是那些担心自己学历不够的小伙伴,一定要看完…

📰

在哪里报名能考电工证 电子证书全国通用吗

在哪里报名能考电工证 电子证书全国通用吗 实操考试心里没底怕挂科?你不是一个人。别担心,这篇文章从报名到拿证全程拆解,带你一步步稳稳拿下电工证,还能拿到全国通用的 电子证书 ,再也不用怕被地方限制。 一、在哪里报名能考电工证?全流程拆解…

📰

工地太忙根本没时间复习考试?衢州电工证多少钱网上查询全解析

工地太忙根本没时间复习考试?衢州电工证多少钱网上查询全解析 工地太忙根本没时间复习考试?你是不是也这样,白天扛着工具在工地上跑,晚上回家还要面对一堆作业和考试题,脑子都快烧掉了?别急,今天咱们就来聊聊【衢州电工证多少钱】,还有怎么在网上查询…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬