On Jun 15 2007 18:56, Vegard Nossum wrote: > bool is_power_of_2(unsigned long n) > { >- return (n != 0 && ((n & (n - 1)) == 0)); >+ return n * !(n & (n - 1)); > }
There is a third way which uses neither * nor &&, but []: bool is_power_of_2(unsigned long n) { static const bool yn[] = { [0] = false, [1 ... (8 * sizeof(n) - 1)] = true, }; return yn[(n & (n - 1)) == 0]; } Jan -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/