我知道许多基本操作,如加法或除法,也可以在 C 中仅使用位运算符来实现。如何对大于或等于号 (>=) 执行相同操作?
if (x >= 0) {
...
}
我知道许多基本操作,如加法或除法,也可以在 C 中仅使用位运算符来实现。如何对大于或等于号 (>=) 执行相同操作?
if (x >= 0) {
...
}
我能想到的最简单的解决方案:
#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
...
如果你只想要if (x >= 0)
那么这就足够了
if (~x & INT_MIN)
如果您的意思是两个数字之间的“大于或等于”,那么差异会更大
如果您只能使用按位运算符,甚至禁用比较运算符,那是不可能的(实际上,几乎没有什么可能)。隐式比较总是存在的,即使是在生成的汇编代码if(x some bitwise stuff)
中实际解释为等价的操作也是如此。if(x some bitwise stuff) != 0)