MATLAB int32在第18位溢出

问题描述 投票:2回答:1

我正在尝试使用MATLAB模拟32位有符号整数算法。 int32函数的行为不符合预期:

accu = 0
inc = 40000
accu = int32(accu + inc)
accu = int32(accu + inc)
accu = int32(accu + inc)
accu = int32(accu + inc)

分别相加后的acc值是40000、80000、120000,然后是-102144。我希望160000而不是负数,因为溢出应该只发生在第32位,而不是第18位。

很奇怪,

int32(120000 + 40000)

预期达到160000。使用上述变量时如何强制执行int32操作?


编辑:由于某些人无法重现此行为,因此我正在添加正在执行的操作的屏幕截图。

screenshot

matlab signed integer-overflow
1个回答
0
投票

文件夹位于文件int32类型的重载plus运算符的路径中。因此,MATLAB仍然使用内置类型,但是替代内置类型执行了另一种操作,导致这种效果。

© www.soinside.com 2019 - 2024. All rights reserved.