32位CPU中,实现32位无符号乘法,返回64位无符号数据。原理解析。
static inline u64 mul64_32x32(u32 u, u32 v){uint32_t u0, v0; //低16bit部分。uint32_t u1, v1; //高16bit部分。uint32_t w0, w1, w2, t;//存储计算中间结果。uint32_t x, y;//计算结果高32bit低32bit。u0 u 0xFFFF;//取u的低16bit。u1 u 16;//取u的高16bit。v0 v 0xFFFF;//取v的低16bitv1 v 16;//取v的高16bit.w0 u0 * v0;//u和v低16bit进行相乘。t u1 * v0 (w0 16);//u低16bit与v高16bit相乘的结果加上w0的进位进位到bit16~bit31结果。计算的结果为bit16~bit47。w1 t 0xFFFF;//t的低16bit。也就是bit16~bit31的值。w2 t 16;//t的高16bbitt的进位进位到bit32~bit47。w1 u0 * v1 w1;//更新为低 16 bit与高 16 bit相乘的结果加上之前的 w1。(计算结果为bit16~bit48的结果)。//x is high 32 bits, y is low 32 bitsx u1 * v1 w2 (w1 16);//计算结果的高32bit。u1*v1值为bit32~bir63的结果前面有解释是bit32~bit47的值w1位移取bit32~bit48的值。这样bit32~bit63的值就计算出来了。x的计算主要为综合了高位和进位的情况进位的情况尤为重要。y u * v;//计算结果的低32bit。低位的部分直接计算超出范围部分会被自动溢出/截断但不影响低32bit的结果。所以保留下来的也就只有低bit0~bit31结果是正确的。return(((uint64_t)x 32) | y);}大家可能会不太明白第三部分的计算。大家看看我们两位数的乘法是如何计算的呢方法也是类似的可以把32bit的数据看做作是两位十进制数相乘十位是u1和v1,个位是u0和v0,两个最大2位数相乘不会超过4位数所以两个32bit的数相乘不会超过64bit方法也就可行。通过这样的方法还可以实现在32位的CPU实现64位数据的乘法返回128位的数据。但是计算的复杂程度更高。如果要实现有符号的32bit相乘那情况将也会更加复杂。Disclaimer / 免责声明:本文仅代表作者在撰写和修改时的个人观点不代表当前或未来立场。文中观点和内容未经学术机构或标准组织验证作者不对其准确性、完整性或可靠性作任何保证。请读者仅供参考并自行核实相关信息。本文旨在探索与经验分享因篇幅及作者水平所限难免存在疏漏欢迎批评指正。如有问题或交流建议请联系flourishinggardenoutlook.com。copyright / 版权声明:本文为作者原创。引用或转载需注明“转自或引用自 flourishinggardenoutlook.com”。 未经注明来源的擅自使用、抄袭或传播行为均被禁止。

相关新闻

基于Spring Boot与Vue的合同管理系统重构:从技术选型到核心业务实现

基于Spring Boot与Vue的合同管理系统重构:从技术选型到核心业务实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/24 14:56:27 阅读更多 →
Chirp+BOK低功耗通信原理与嵌入式实现

Chirp+BOK低功耗通信原理与嵌入式实现

简介:本资源是一份面向通信工程专业学生及信号处理初学者的MATLAB实践代码包,聚焦Chirp调制原理与Chirp扩频BOK(Binary Offset Keying)实现,解决线性调频信号建模、相位编码调制、噪声信道仿真及匹配滤波解调等核心问题…

2026/11/4 19:49:29 阅读更多 →
共模电感与差模电感:原理、选型与EMC滤波设计实战

共模电感与差模电感:原理、选型与EMC滤波设计实战

这次我们来看一个硬件工程师面试中的经典问题:共模电感和差模电感到底有什么区别?这个问题看似基础,却是区分工程师是否真正理解电磁兼容(EMC)设计的关键。无论是准备笔试面试,还是在实际电路设计中选型&am…

2026/11/9 22:47:29 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/10 23:32:01 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/10 23:32:03 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/11 2:31:33 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/10 16:14:15 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/10 12:51:50 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/10 23:32:10 阅读更多 →

日新闻

周新闻

月新闻