我知道许多基本操作(如加法或除法)也可以仅使用按位运算符在C中实现。如何使用大于或等号(> =)来做同样的事情?
if (x >= 0) {
...
}
答案 0 :(得分:1)
我能想到的最简单的解决方案:
#include <limits.h>
if ((x & INT_MAX) == x) // if (x >= 0)
...
如果您不喜欢==
,请使用XOR进行等于测试:
#include <limits.h>
if ((x & INT_MAX) ^ x) // if (x < 0)
...
else // else x >= 0
...
答案 1 :(得分:0)
如果您只想要if (x >= 0)
,那么这就足够了
if (~x & INT_MIN)
如果你的意思是&#34;大于或等于&#34;一般来说,在2个数字之间,它会有更大的差异
答案 2 :(得分:-1)
如果您只能使用按位运算符,甚至禁用比较运算符,则无法实现(实际上,几乎没有任何可能)。隐式比较始终存在,即使if(x some bitwise stuff)
等操作实际上也被解释为生成的汇编代码中等效于if(x some bitwise stuff) != 0)
。