(y^(x^y)&-(x<y))求取二者的最小值
如果x<y;则根据运算规则有,-(x<y)为-1,计算机中都是用补码表示数字的,所以计算机中-1表示为全1;所以在下一步的运算中(x^y)&-(x<y)得到的结果为(x^y);之后y^(x^y),根据异或运算的交换略,y^y^x结果为x;
如果x>y;则根据运算规则有,-(x<y)为0,计算机中补码表示也是全为0,所以(x^y)&-(x<y)得到的结果为0,之后y^0为y;
综上所述,所以这个式子返回的是x和y的最小值。
(x^(x^y)&-(x<y))求取二者的最大值
经过以上的分析,我们可以很快推导出使用这些位运算计算二者最大值的方法,即(y^(x^y)&(x<y-1))或者(x^(x^y)&-(x<y));具体的推导过程和上面的一样。