Jul 052012
 

Given two unsigned integers, find the larger (or smaller) of the two without using branching (if-else or conditional operator).

Solution:

If given numbers are x and y, then the obvious answer is

    max = (x>y) ? x : y;

But it is using branching (conditional operator). Without using branching, you may choose the below method to find the largest.

    x ^ ((x ^ y) & -(x < y));

This method relies on the fact that XOR with 0 will result in the number itself, i.e

    x ^ 0 == x

and XOR of a number with itself will be zero. i.e

    x ^ x == 0

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)