gpt4 book ai didi

c++ - 验证乘法溢出测试

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:18 26 4
gpt4 key购买 nike

我已经实现了以下函数来检测乘法是否溢出:

bool IsSafeMul(uint32_t x, uint32_t y) {
uint32_t z = x * y;
return (z >= x && z >= y);
}

我已经根据经验验证了它,但我想确保:

  1. 是否能 100% 保证正常工作(即没有误报和漏报)?
  2. 它能 100% 保证对任何其他 unsigned 类型正常工作吗?

最佳答案

不,不能保证它能正常工作。例如,

0x000FFFFF * 0x000FFFFF = 0xFFFFE00001 

它在截断为 32 位后生成 0xFFE00001,这通过了您的测试。但是乘法会溢出。

要测试乘法溢出,您可以简单地检查 z/x == y,前提是 x 不为零。

关于c++ - 验证乘法溢出测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45950601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com