判断两个unsigned变量相加有没有溢出:
return (x + y) >= x ? 1 : 0;
证明:
sum = x + y
如果溢出,则:
sum = x + y - 2^w // w 为位长度
且 x < 2^w, y < 2^w
故:
sum < x
举例:
令w = 4,
故最大可表示为:1111 -> 0xF
9 + 12 = 21
1001 + 1100 = 10101
10101 第一个'1'截断后为:0101 -> 5
故:9 + 12 = 5
5为 (21 - 2^4)