c++ - 我的方法需要使用更少的运算符

标签 c++ operators bit-manipulation

我正在做家庭作业,我需要创建一个最多包含 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/

相关文章:

c++ - OpenMPI MPI_Send 与 Intel MPI MPI_Send

swift ,两个问题。 1) weak var 2) @IBOutlet 的 bang 运算符

c++ - 将整数紧密地打包在一个 vector 中 - 可以更快地完成吗?

java - Java 中使用否定的位操作

c++ - 在服务器上部署本地编译的二进制文件

c++ - cppunit:setUp() 和 tearDown()

c++ - QFileSystemModel rowCount 不能按预期工作

JAVA基础编码。为什么100/1=110,300/3、400/4、500/5呢?

php - 在PHP中, "<<<"代表什么?

python - Python中的位列表到整数