我在看书。书上写着-
浮点加法满足以下单调性:
如果a>=b
,则对于除(x + a) >= (x+b)
之外的任何值a
、b
和x
。实数(和整数)加法的这个性质不服从无符号加法或二补加法。
浮点如何遵循它?
为什么无符号或二的补码加法不服从它?
最佳答案
C中的无符号整数基本上形成一个环,也就是说,它们最终会换行。例如,连续向无符号整数中添加1将持续增加它,直到它包装为零,这意味着添加1将产生至少小于1的结果,因此不满足单调性。
有符号整数会溢出,这比较复杂,但在C语言中也是未定义的行为,因此我们应该排除这种情况。
对于C中的浮点数,根据IEEE745,两个正数相加(这意味着没有一个是NaN,因为NaN不是正数或负数)产生的结果大于或等于两个加数中较大的一个:要么形成一个确实较大的结果,要么产生一个加数,因为另一个加数一个人被吸收,或者通过产生无限。重要的一点是,加法满足单调性,但不一定严格单调性。
关于c - 浮点单调性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45652225/