标签: bit bit-shift arithmetic-expressions
我学会了这样的条件:(x是4个字节)
if (x) a = y else a = z;
可表示为:
a = ((x<<31)>>31)&y + (((!x)<<31)>>31)&z
我可以理解它的作用,但我认为它是在x的所有位0(评估为0,00..00)或最右边的1和其余部分的情况下受到限制的位为0(计算为1,如00 ... 1) 但由于任何非零值都可以被评估为真(例如00..010..0),因此上面的表达式不起作用。
x
那么在这种情况下我们如何使用轮班操作?