【发布时间】:2011-01-21 23:34:31
【问题描述】:
~ & ^ | + << >> 是我唯一可以使用的操作
在我继续之前,这是一个家庭作业问题,我已经坚持了很长时间。
我最初的方法:我认为 !x 可以用二进制补码来完成,并用它的加法逆来做一些事情。我知道这里可能有一个异或,但我真的不知道如何处理这个问题。
声明:我也不能使用条件、循环、== 等,只能使用我上面提到的函数(按位)。
例如:
!0 = 1
!1 = 0
!anything besides 0 = 0
【问题讨论】:
-
您真的希望他们直接评估为 1 和 0,还是只是逻辑真假?即
~0是否可以接受为逻辑真? -
注意:
+不是位运算符。 -
这种练习本质上是没有意义的,因为任何使用结果都需要一个基本上与零进行比较的条件。我的答案是
if (var); else { /* your code here */ } -
@R.:诀窍是你不需要使用条件,因为 C 没有
bool。 (例如,而不是return x != 0;,你可以说return x;,假设他不需要1返回......这就是我想要弄清楚的。) -
@Mehrdad:C99 确实有
bool,但 AFAIK 你必须包含stdbool.h才能得到它,除非你很高兴说_Bool。
标签: c bit-manipulation boolean-logic negation