News for hackers. Stuff that matters.
Re:Ten Ways to Check if an Integer Is a Power Of Two in C by mansr on Tuesday July 26, 2011 @10:23AM (#2807419)
One they missed: (x & -x) == x
Re:Ten Ways to Check if an Integer Is a Power Of Two in C by chime on Tuesday July 26, 2011 @10:53AM (#2807599)
That was #9:

    int isPowerOfTwo (unsigned int x)
    {
      return ((x != 0) && !(x & (x - 1)));
    }
Re:Ten Ways to Check if an Integer Is a Power Of Two in C by cube13 on Tuesday July 26, 2011 @10:54AM (#2807604)
This works for negative values of x, though.

It should be: ((x>0) && ((x & -x) == x))

Re:Ten Ways to Check if an Integer Is a Power Of Two in C by quacker on Tuesday July 26, 2011 @10:53AM (#2807601)
This is method 10 in the article, since -x is equivalent to ~x+1.
Re:Ten Ways to Check if an Integer Is a Power Of Two in C by Jabbles on Tuesday July 26, 2011 @10:28AM (#2807447)
Unfortunately this doesn't work for x=0.
Re:Ten Ways to Check if an Integer Is a Power Of Two in C by rcfox on Tuesday July 26, 2011 @10:31AM (#2807467)
2^-infinity == 0
Re:Ten Ways to Check if an Integer Is a Power Of Two in C by Jabbles on Tuesday July 26, 2011 @10:44AM (#2807551)
And 3 == 2^(log_2(3)).

Clearly we want to know if x is an integer power of 2.

Re:Ten Ways to Check if an Integer Is a Power Of Two in C by wnoise on Tuesday July 26, 2011 @12:24PM (#2808074)
2^(bitsize) == 0.

Edit: Yes, 1 << bitsize is undefined. But unsigned integers actually do have well-defined semantics on overflow, and multiplying by 2 enough times really does produce zero.

Re:Ten Ways to Check if an Integer Is a Power Of Two in C by rcfox on Tuesday July 26, 2011 @12:48PM (#2808224)
Actually, it's undefined behaviour. http://blog.regehr.org/archives/213
Re:Ten Ways to Check if an Integer Is a Power Of Two in C by ot on Tuesday July 26, 2011 @12:49PM (#2808229)
2^(bitsize) == 2^(bitsize)

If you meant 1 << (bitsize), that's undefined behaviour in C

Re:Ten Ways to Check if an Integer Is a Power Of Two in C by mansr on Tuesday July 26, 2011 @10:40AM (#2807517)
So make it x && blah. Do I really have to state the obvious?
Re:Ten Ways to Check if an Integer Is a Power Of Two in C by Jabbles on Tuesday July 26, 2011 @10:45AM (#2807558)
You're a computer programmer (probably). Yes you have to state the obvious...