无符号数加法
如果参数x和y相加不会产生溢出,这个函数就返回1。
int uadd_ok(unsigned x,unsigned y){
unsigned sum = x + y;
return sum >= x;
}
无符号数求反
补码加法
如果x和y相加不会产生溢出,函数就返回1。
int uadd_ok(int x,int y){
int sum = x+y;
int neg_over = x < 0 && y < 0 && sum >= 0;
int pos_over = x >= 0 && y >= 0 && sum < 0;
return !(neg_over) && !(pos_over);
}
补码的非