Here’s a fun implementation of absolute value. long abs_value(long num) { long sign = num >> (sizeof(long)*CHAR_BIT - 1); // so you only get all 1s or all 0s return (num ^ sign) - sign; // sign is either -1 or 0. So, if num is non-negative // num^sign is not going to do anything (as 0^0 = 0, 0^1 = 1). // If num negative, num^sign is going to flip the bit AND subtract // negative on (i.e. add one) }

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?