请教大神: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条回答
3DA502
1楼-- · 2019-12-24 21:56
用浮点         
随风飘旭
2楼-- · 2019-12-25 02:04
即使不溢出,这俩结果也没法一致。
Nuker
3楼-- · 2019-12-25 07:41
 精彩回答 2  元偷偷看……
zouzhichao
4楼-- · 2019-12-25 08:58
随风飘旭 发表于 2017-8-26 11:01
即使不溢出,这俩结果也没法一致。

看到问题本质了
hefeizdl
5楼-- · 2019-12-25 09:16
随风飘旭 发表于 2017-8-26 11:01
即使不溢出,这俩结果也没法一致。

”e=(x/1000)*y;“这个是避免溢出现象的写法。
chenchaoting
6楼-- · 2019-12-25 15:03
hefeizdl 发表于 2017-8-26 11:37
”e=(x/1000)*y;“这个是避免溢出现象的写法。

溢出是避免了,精度却下降了

一周热门 更多>