这是一个家庭作业,需要我想出一个函数来确定是否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
。
我一直在这里检查这篇文章。
但是我对这种解决问题的方法有点困惑。我已经计算出移位以实现位涂抹,但我对如何使用该结果来比较小于或大于的值感到困惑。我只是在寻找一点指导和清晰度,而不是解决方案,这不是我的意图。