【发布时间】:2021-04-05 20:45:46
【问题描述】:
我必须创建检查整数加法、减法和无符号整数加法中溢出的函数(仅使用! ~ | & ^ + >> <<)。我已经为有符号整数加法和减法找到了函数,但我不知道如何为无符号整数加法做一个。
我该怎么做呢?
这是我已完成的 2 个功能的代码:
int twosAddOk(int x, int y){
int z=x+y;
int a=x>>31;
int b=y>>31;
int c=z>>31;
return !!(a^b)|(!(a^c)&!(b^c));
}
int twosSubtractOK(int x, int y){
int z=x+~y+1;
return !(((x^y & x^z))>>31);
}
【问题讨论】:
-
请出示您目前的支票代码。
-
@Barmar 看起来会违反约束
-
@AndrewHenle 我不允许使用 if 语句,只能使用我提供的运算符
-
@ians 为什么要限制运营商?什么应用程序需要它?看起来这会混淆代码。
-
您的代码使用了赋值运算符
=,它不在允许的列表中。 (此评论的重点是您只使用这些运算符的限制是愚蠢的。)
标签: c