CSAPP3e第二章(整数的运算)
整数的运算(第二章 Part2)
无符号数加法溢出
无符号的数的加法溢出规则很简单, 单纯截取后 \(w\) 位, 或称对 \(2^w\) 取模。因此:
\[ x\ +_w^u\ y = \begin{cases} x + y, & x + y < 2^w, \\ x + y - 2^w, & 2^w \leq x + y < 2^{w+1}. \end{cases} \]
(\(+_w^u\) 表示最多 \(w\) 位下的二进制无符号数加法。下文\(+_w^t\) 即 \(w\) 位补码加法)
检验无符号数加法溢出
若 \(s = x +_w^u y\), 当且仅当 \(s < x\) (或等价地 \(s < y\)) 时发生溢出。
(当然, 默认 \(x\) 和 \(y\) 本身不会溢出, 即在 \([0, UMax_w]\) 的范围内)
原理易证, 分别证明充分性必要性即可, 注意利用以上公式