乘数比较大时溢出处理(一)

发布时间:2026/8/23 8:02:32

乘数比较大时溢出处理(一)
目录一、问题二、方案选型按 ISP 嵌入式工程推荐优先级排序方案 164 位中间变量中转方案 2无 64‑bit 硬件极老旧 MCU无uint64_t/long long—— 带余数补偿拆分算法方案 3溢出预判 分支分流不推荐主路径适合异常保护方案 4定点 Q 格式缩放适合无除法硬件、硬件加速 ISP 算子各方案对比表ISP 直方图场景额外工程建议一、问题isp 图像处理中需要统计0-255所有bin d的直方图信息之和。一般ISP会设置不同区域的权重再统计每一个像素进行构建直方图。如果分辨率比较大的时候对其做加权处理后直方图所有bin之和会是一个比较大的数值all_total现在我想对取所有像素的百分比的时候比如 all_total*ratio/100, 设定其其像素进行统计百分比阈值当大于某一阈值进行一些逻辑操作。在32bit系统中当all_total比较大的时候all_total*ratio对 unsigned long 范围可能溢出需要做溢出处理。// 危险代码极易溢出 unsigned long total; uint16_t ratio; unsigned long thresh (total * ratio) / 100U;total是直方图像素总和32‑bitunsigned long最大值0xFFFFFFFF 4294967295 先执行乘法total * ratio乘法结果超出 32 位范围就发生无符号溢出回绕数值错乱之后再除以 100 得到完全错误阈值。溢出临界点例ratio100安全上限 42,949,672只要直方图总像素该值乘法直接溢出。二、方案选型按 ISP 嵌入式工程推荐优先级排序方案 164 位中间变量中转【首选如果系统为64bit优选】核心技巧先把其中一个操作数强制提升到 64bit 再相乘乘法全程在 64 位空间运算永远不会溢出 32bit 像素总和场景。⚠️致命坑不能(uint64_t)(total*ratio)此时乘法已经 32 位溢出后再强转为时已晚#include stdint.h uint32_t CalcPercentThresh(uint32_t total, uint16_t ratio) { /* (uint64_t)total 先提升位宽ratio自动提升为64bit相乘 */ uint64_t temp (uint64_t)total * ratio; temp temp / 100U; /* 结果一定 total安全转回32bit */ return (uint32_t)temp; }适用平台所有带 C99 编译器嵌入式64bit Linux优点零精度损失逻辑最简单无误差无分支判断上限能力total ≤ 4G、ratio ≤ 100乘积最大 400G远小于 64 位上限 (1.8e19)绝对不会溢出。ISP 直方图百分比阈值判断示例累计直方图大于阈值触发逻辑uint32_t total_sum ...; //直方图所有bin总和 uint32_t percent_thresh; percent_thresh (uint32_t)((uint64_t)total_sum * 95U / 100U); //遍历累计直方图找到第一个累计percent_thresh的灰度位置做阈值方案 2无 64‑bit 硬件极老旧 MCU无uint64_t/long long—— 带余数补偿拆分算法直接(total / 100)*ratio会产生截断精度丢失 利用恒等式做精确拆分AtotalBratioC100。uint32_t MulDiv32_NoOverflow(uint32_t A, uint32_t B, uint32_t C) { uint32_t div A / C; uint32_t rem A % C; uint32_t part1 div * B; uint32_t part2 (rem * B)/ C; return part1 part2; } //调用thresh MulDiv32_NoOverflow(total, ratio, 100U);约束rem C本例 C100rem*ratio最大 99*1009900永远不会溢出 32 位完美规避大数乘法溢出。优点纯 32 位运算无 64 位依赖数学结果完全等价 (A*B)/C精度无损缺点多一次除法、取余运算少量耗时适合无 64‑bit 的极简内核。方案 3溢出预判 分支分流不推荐主路径适合异常保护先预判乘法会不会溢出溢出时走备选计算路径。 溢出判定条件/* 判断 total * ratio 是否溢出32bit无符号 */ if (total UINT32_MAX / ratio) { //溢出分支使用拆分除法方案 } else { //安全分支直接运算 thresh (total*ratio)/100U; }缺点代码双分支逻辑复杂ISP 流水线不喜欢条件分支容易引入跳转延迟。方案 4定点 Q 格式缩放适合无除法硬件、硬件加速 ISP 算子如果你不想运行时除法可提前转为定点运算例如 Q8放大 256 倍同样乘法必须 64 位中转防止溢出uint32_t q_factor (ratio * 256U)/100U; uint32_t thresh (uint32_t)(((uint64_t)total * q_factor) 8U);适合硬件 ISP 内核移位代替除法适合做 LCE/AE 实时直方图统计。各方案对比表方案是否需要 64 位精度损失ISP 工程推荐度64bit 中转 (uint64_t)是无损失⭐⭐⭐⭐⭐首选带余数拆分 MulDiv32否无损失⭐⭐⭐⭐ 无 64bit 时使用先除后乘无余数补偿否有截断误差❌禁止使用溢出预判分支是 / 否无损失⭐⭐ 仅做防护Q 定点缩放是微小舍入误差⭐⭐⭐适合硬件算子ISP 直方图场景额外工程建议永远优先用 (uint64_t) 强转方案如果图像信号处理器 ARM 内核都支持 64 位优先使用不要为了省一点点周期牺牲溢出安全性直方图总像素经常可达 200 万、800 万、1200 万像素极易触发 32‑bit 乘法溢出百分比阈值逻辑90%、95% 累计直方图截断DRC / 阴影抑制的工业标准代码范式//累计直方图百分比阈值 uint32_t hist_sum GetHistTotalSum(); uint32_t cumu_th (uint32_t)((uint64_t)hist_sum * 95U / 100U); uint32_t cum_sum 0; uint32_t gray_th 255; for(int bin0;bin255;bin) { cum_sum hist[bin]; if(cum_sum cumu_th) { gray_th bin; break; } } //使用gray_th做后续图像亮度分割逻辑

相关新闻

实时翻译工具全解析:从ASR到NMT,构建高效跨语言信息工作流

实时翻译工具全解析:从ASR到NMT,构建高效跨语言信息工作流

2026/8/23 8:02:32

1. 这篇文章真正要解决的问题你是否遇到过这样的场景:在观看一场没有字幕的海外技术大会直播时,演讲者语速飞快,你只能听懂几个零散的单词;或者,在阅读一篇关键的英文技术文档时,虽然能看懂大部分&#xff…

Meta:小模型调参揭示缩放定律

Meta:小模型调参揭示缩放定律

2026/8/23 8:02:32

📖标题:Small-Scale Experiments: Are We There Yet? 🌐来源:arXiv, 2608.11859v1 🛎️文章简介 🔸研究问题:为何基于小模型的实验难以可靠地预测大模型的性能,导致缩放定律在低成本…

数学建模实战:从SEIR模型到多目标优化,解析疫情应对策略

数学建模实战:从SEIR模型到多目标优化,解析疫情应对策略

2026/8/23 8:02:32

1. 从“最优应对策略”到“可执行方案”:一次数学建模实战复盘 去年,我带着团队参加了数维杯数学建模竞赛,B题“大规模新型冠状病毒疫情最优应对策略研究”给我们留下了深刻的印象。这道题没有标准答案,它更像一个开放的沙盘&…

Java工程师面试核心考点与实战解析

Java工程师面试核心考点与实战解析

2026/8/23 8:52:34

1. 面试背景与核心考察维度 去年帮团队招聘中级Java开发时,遇到一位候选人(姑且称他"谢飞机")的面试表现极具代表性。这场持续2小时的技术面涉及12个核心考察点,恰好覆盖了当前主流互联网企业对Java工程师的能力模型要求…

Spring Boot多环境配置实战:Profile机制与EZ模式详解

Spring Boot多环境配置实战:Profile机制与EZ模式详解

2026/8/23 8:52:34

最近在开发中遇到一个很有意思的场景:一个同事在调试接口时,发现某个功能在“EZ模式”下表现异常,他疑惑地问我:“这个‘山丘C版’在EZ模式下到底应该是什么样子?” 我才意识到,对于很多刚接触这个系统或者…

嵌入式Linux开发环境搭建:从交叉编译到Qt部署全流程详解

嵌入式Linux开发环境搭建:从交叉编译到Qt部署全流程详解

2026/8/23 8:52:34

1. 从零到一:为什么嵌入式Linux开发离不开Qt? 如果你刚接触嵌入式Linux开发,可能会被一堆名词搞晕:交叉编译、根文件系统、FrameBuffer、Wayland…… 然后你发现,要在那块小小的开发板上显示一个带按钮的窗口&#xf…

LightGBM在时间序列预测中的实战应用:以全球气温预测为例

LightGBM在时间序列预测中的实战应用:以全球气温预测为例

2026/8/23 8:52:34

1. 从赛题到模型:一次完整的数据建模实战复盘 去年带队参加亚太杯数学建模竞赛,我们组选的正是C题——全球气温预测。这道题乍一看是经典的时间序列预测问题,但深入下去,你会发现它远不止套个ARIMA或LSTM那么简单。它考察的是从数…

STM32 SD 卡 + FatFS 实战:掉电丢数据?f_sync 和簇对齐写救你

STM32 SD 卡 + FatFS 实战:掉电丢数据?f_sync 和簇对齐写救你

2026/8/23 8:52:34

给温控器加数据记录功能那次,客户要求"断电前至少保留最近 1000 条记录"。我一开始用片上 Flash 轮流擦两页存,每条 16 字节,两页一共只能存 128 条。后来换了 SD 卡,FatFS 一挂,f_open 一个 CSV 文件一行行…

APEX框架:打造制造业自适应AI智能体的三层自进化架构

APEX框架:打造制造业自适应AI智能体的三层自进化架构

2026/8/23 8:42:34

1. 项目概述:当AI智能体走进生产车间最近和几个在制造业做数字化转型的朋友聊天,大家普遍有个痛点:生产线上的AI智能体,刚上线时表现还行,但产线一换、产品型号一变,或者设备参数稍有调整,模型性…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/23 0:02:09

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/23 0:02:09

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/23 0:02:09

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/22 2:02:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/22 4:13:47

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/22 1:32:34

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…