浮点单调性质

Dan*_*med 6 c floating-point twos-complement unsigned-integer real-number

我正在读一本书.在书中写道 -

浮点加法满足以下单调特性:
如果a>=b再(x + a) >= (x+b)对任何价值a,b和x其他比NaN.无符号或二进制补码的加法不符合实数(和整数)加法的这一性质.

浮点如何服从它?
为什么无符号或两个补码不符合它?

Kam*_*jii 7

C中的无符号整数基本上形成一个环,即它们最终包裹.例如,连续地将1添加到无符号整数将持续增加它直到它换行为零,这意味着添加一个产生至少小于1的结果,因此不满足单调性.

有符号整数会溢出,这更复杂,但在C中它也是未定义的行为,所以我们应该排除它.

对于C中的浮点数,根据IEEE745,添加两个正数(这意味着它们都不是NaN,因为NaN不知道是正还是负)产生的结果大于或等于两个加数中的较大者:通过形成确实更大的结果,或者通过产生一个加数,因为另一个被吸收,或者通过产生无穷大.重要的是要注意,加法满足单调性,但不一定是严格的单调性.