gpt4 book ai didi

假设分母<>0,整数除法是否会溢出/下溢?

转载 作者:行者123 更新时间:2023-12-01 22:19:04 24 4
gpt4 key购买 nike

(真)整数除法是否会溢出/下溢(假设分母不为 0)?

由于该值总是保持不变或变小(因为在整数除法中,最小绝对非零分母是 1,因此结果永远不会大于分子),所以我假设不会。

我或多或少地在 C/C++ 标准的背景下提出问题,并且我对各种现代 CPU 架构在定义/未定义行为时如何以不同的方式处理整数除法感兴趣。

最佳答案

Since the value is always either staying the same or getting smaller...

我以前也是这么想的,但当我们这么说时,我们悄悄地假设分母是

由于分母可以为负数,因此存在一种晦涩但毁灭性的情况:在 2 的补码算术中,INT_MIN/-1 的数学结果是一个比 INT_MAX< 多 1 的数字.

也就是说,在 16 位 2 的补码机器上,INT_MIN 是 −32768,这是完全可以表示的,但是 −32768 ÷ −1 想要是 +32768,但是 INT_MAX 就是 32767。同样,在 32 位中,-2147483648 可以表示,但也不能被 -1 整除。

这是 2 的补码算术的一个特殊现象,出现的原因是 INT_MIN 的大小与 INT_MAX 的大小并不完全相同。另一方面,在补码或符号/幅度算术下, INT_MIN 恰好是 INT_MAX 的负数,因此不存在“灾难性的情况”,据我所知除法对于所有输入都有明确的定义(当然,除了分母中的零)。

关于假设分母<>0,整数除法是否会溢出/下溢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58881636/

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