matlab - MATLAB int32 在第 18 位溢出
问题描述
我正在尝试使用 MATLAB 模拟 32 位有符号整数算术。int32 函数的行为与预期不同:
accu = 0
inc = 40000
accu = int32(accu + inc)
accu = int32(accu + inc)
accu = int32(accu + inc)
accu = int32(accu + inc)
各加后的 accu 值为 40000、80000、120000 和 -102144。我预计 160000 而不是负数,因为溢出应该只发生在第 32 位,而不是第 18 位。
说来也怪,
int32(120000 + 40000)
正如预期的那样给出160000。使用上述变量时,如何强制执行 int32 操作?
编辑:我正在添加我正在做什么的截图,因为有些人无法重现该行为。
解决方案
一个文件夹位于文件重载 int32 类型的加号运算符的路径中。所以 MATLAB 仍然使用内置类型,但不是内置类型,而是执行了不同的类型,导致了这种效果。
推荐阅读
- android - 如何通过后退按钮(箭头)将活动导航到片段?
- c - 拓扑排序 - 创建直接图问题
- c++ - 如何将 jbyteArray(或字节数组)写入 txt 文件 c++?
- ssh - Jsch - 在到 SLES15 服务器的单个会话中打开多个通道失败
- excel - 返回值表示 Excel 中的最小值
- git - git extract directory from repository - 重命名之前的提交历史丢失
- css - 具有透明背景的文本的 CSS 视频在 Safari 上不起作用
- wordpress - Wordpress localhost:3000 使用 MAMP 6 返回 SSL_ERROR_RX_RECORD_TOO_LONG
- angular - 星云身份验证:后端身份验证端点
带有子路径:在哪里设置? - okd - 启动 Minishift VM ..... FAIL E1210:“这台计算机没有启用 VT-X/AMD-v。必须在 BIOS 中启用它”