请教大神:ARM的32位乘法溢出如何解决

2019-12-24 18:39发布

        uint32_t   e,d,y,x;
        x=0xffffffff;y=100;
           e=(x/1000)*y;
        d=(x*y)/1000;
仿真结果e和d的结果不相同。应是x*y溢出32位所致,请教如何解决!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
信天游
1楼-- · 2019-12-26 10:19
 精彩回答 2  元偷偷看……
zqf441775525
2楼-- · 2019-12-26 13:01
信天游 发表于 2017-8-26 22:44
改用float吧

float不也是占用4个字节么?它不会溢出?
lingdianhao
3楼-- · 2019-12-26 16:02
可以用double.
laujc
4楼-- · 2019-12-26 18:57
zqf441775525 发表于 2017-8-26 23:26
float不也是占用4个字节么?它不会溢出?

牺牲精度,可以带来更大的表示范围。
ywlzh
5楼-- · 2019-12-26 22:25
这个目前还没发现好的办法 ,毕竟基本的整数数据类型都有范围牵制。

http://blog.csdn.net/Jason_Ranger/article/details/51250458

这个是大数相乘,作为字符串来搞的。
90999
6楼-- · 2019-12-27 00:06
 精彩回答 2  元偷偷看……

一周热门 更多>