所以我看到这个问题已经被提出,但答案有点模糊,无益。好的,我只需要使用“& ^〜!+ |>><<”
来实现c表达式表达式需要类似:a? b:c
所以,从我能够说的,表达式需要看起来像:
return (a & b) | (~a & c)
当a = 0时,这是有效的,因为用b和它将得到零,然后或表达式将返回右侧,(~a & c)
这是有效的,因为~0给出了所有的,并且和c一起使用了所有的返回c。
然而,当>时,这不起作用。有人可以尝试解释这是为什么,或者如何解决它?
答案 0 :(得分:16)
我会使用a
将!!a
转换为布尔值,以获得0或1. x = !!a
。
然后我在两个补语中否定它。由于您没有一元减号可用,因此使用2的补码否定的定义:反转位,然后添加一个:y = ~x + 1
。这将使所有位清零或设置所有位。
然后我and
直接使用一个变量y & b
,它与另一个变量~y & c
相反。这将为其中一个表达式赋予0,为另一个表达式赋予原始变量。当我们or
在一起时,零将没有效果,所以我们将得到原始变量,不变。
答案 1 :(得分:3)
换句话说,如果a为a
(即0),则需要false
将所有位设置为0,并且如果a
为a > 0
,则将所有位设置为1是的(即~!1
)。
对于前一种情况,已经完成了工作;对于后者 - 尝试计算表达式{{1}}的结果。