这是一个家庭作业,需要我想出一个函数来确定是否x < y,如果是,我必须返回1,只使用位运算符( ! ~ & ^ | + << >> )。我只被允许使用 constants 0 - 0xFF,并假设一个 32 位整数。没有循环,铸造等。
我发现如果您只检查 4 位,您x - y可以确定是否x小于y. 如果x是8并且y是9结果将1111是-1。
int lessThan(int x, int y){
int sub = x + (~y+1);
我感到困惑的是现在如何将该结果与 进行比较x以确定它确实小于y。
我一直在这里检查这篇文章。
但是我对这种解决问题的方法有点困惑。我已经计算出移位以实现位涂抹,但我对如何使用该结果来比较小于或大于的值感到困惑。我只是在寻找一点指导和清晰度,而不是解决方案,这不是我的意图。