1

我知道许多基本操作,如加法或除法,也可以在 C 中仅使用位运算符来实现。如何对大于或等于号 (>=) 执行相同操作?

if (x >= 0) {
    ...
}
4

3 回答 3

1

我能想到的最简单的解决方案:

#include <limits.h>

if ((x & INT_MAX) == x)    // if (x >= 0)
    ...

如果您不喜欢,==则使用 XOR 进行 equals 测试:

#include <limits.h>

if ((x & INT_MAX) ^ x)    // if (x < 0)
    ...
else                      // else x >= 0
    ...
于 2012-11-15T12:35:06.147 回答
0

如果你只想要if (x >= 0)那么这就足够了

if (~x & INT_MIN)

如果您的意思是两个数字之间的“大于或等于”,那么差异会更大

于 2015-01-26T05:00:30.633 回答
-1

如果您只能使用按位运算符,甚至禁用比较运算符,那是不可能的(实际上,几乎没有什么可能)。隐式比较总是存在的,即使是在生成的汇编代码if(x some bitwise stuff)中实际解释为等价的操作也是如此。if(x some bitwise stuff) != 0)

于 2012-11-15T11:50:35.190 回答