条件作为使用移位操作的布尔表达式

时间:2018-03-13 22:51:34

标签: 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),因此上面的表达式不起作用。

那么在这种情况下我们如何使用轮班操作?

0 个答案:

没有答案