题目:
Given an integer, write a function to determine if it is a power of two.
给定一个整数,写一个函数来确定它是否是2的幂。
思路:
刚开始想到,只要判断是不是2的倍数就好,但是又想到是2的倍数但又不是2的幂也有,比如说6。查看解决方案,如果一个数是2的幂的话,那它的二进制最高位必然是1,其他都为0,此时如果减1,最高位就会降一位,其余为0的变为1,把两个数相与,就会得到0.
还有一种写法,相对来说复杂一些,只要判断最低位是否为1,然后向右移位,判断1的个数就可以判断是不是2的幂,因为如果是2的幂,只有最高位为1,其余都为0。