x < y ( -1, true, 0, false), : (. Hacker Delight, 2, )
((x - y) ^ ((x ^ y) & ((x - y) ^ x))) >> 31;
, x - y ~(~x + y)
, 1 & ~((x < lower) | (upper < x))
, , 32- . , .
:
int in_range(int x, int lower, int upper)
{
int p = ((x - lower) ^ ((x ^ lower) & ((x - lower) ^ x))) >> 31;
int q = ((upper - x) ^ ((upper ^ x) & ((upper - x) ^ upper))) >> 31;
return 1 & ~(p | q);
}
, , .
, >= <= ( Hacker Delight).
, .
, , , :
int p = (x | ~upper) & ((x ^ upper) | (~upper + x));
int q = (lower | ~x) & ((lower ^ x) | (~x + lower));
return 1 & ((p & q) >> 31);
<= HD, (x | ~y) & ((x ^ y) | ~(y - x)) .
, .