question
Write a function to determine if a number is a power of two.
For this question really think outside of the box. Try to think in terms of lower level code.
At first thought you may decide to use a recursive function or a while loop. Both of these though are bested by simply using the binary representation of the numbers. In fact, the solution runs in O(1).

Any number that is a power of two will have one bit in its binary form.
ex.
2 = 00010
4 = 00100
8 = 01000
16 = 10000


Subtracting 1 from the powers will result in the following binary representations:
2 - 1 = 1 = 00001
4 - 1 = 3 = 00011
8 - 1 = 7 = 00111
16 - 1 = 15 = 01111


Using a bitwise '&' operator to compare the original power number and the number subtracted by one will result in 0.
ex. 00010 & 00001 = 0

This unique pattern will only work if the input number is a power of two.

isPowerOfTwo(int input)
    return (input != 0) && (input & (input - 1)) == 0;



Note: This trick was actually very popular in the past but seems to be new to many recent grads. If you're having trouble with bitwise operators check out this site.