我正在做家庭作业,我需要创建一个最多包含 24 个运算符的按位方法。我的代码有效……但我有 25 个运算符(operator),太多了。谁能找到一种更有效的方法来编写一段代码?
int isGreater(int x, int y)
{
int xSign = (x>>31);
int ySign = (y>>31);
int check1 = (xSign & ySign) | (~xSign & ~ySign);
int same = !((( x + ((~y) + 1) )>>31) & 0x1);
int check2 = (check1 & same) | (~check1 & !xSign);
int equal = ((!(x ^ y))<<31)>>31;
return 0 | (~equal & check2);
}
最佳答案
尝试改变这一行:
int check1 = (xSign & ySign) | (~xSign & ~ySign);
为此:
int check1 = (xSign & ySign) | ~(xSign | ySign);
少了一个运算符。
关于c++ - 我的方法需要使用更少的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10151101/