3 int saturating_add(int x,int y)
4 {
5 int w=sizeof(int)<<3;
6 int sum = x+y;
7 int mask = 1<<(w-1);
8 int x_lmb = x&mask;
9 int y_lmb = y&mask;
10 int sum_lmb = sum&mask;
11
12 int neg_of = x_lmb && y_lmb && (!sum_lmb);
13 int pos_of = !x_lmb && !y_lmb && sum_lmb;
14
15 (pos_of &&(sum=INT_MAX)) || (neg_of && (sum = INT_MIN));
16 return sum;
17 }
csapp2e 家庭作业 2.73
最新推荐文章于 2022-04-18 21:46:00 发布