将2的幂次方写成二进制形式后,很容易就会发现有一个特色:二进制中只有一个1,而且1后面跟了n个0;所以问题能够转化为判断1后面是否跟了n个0就能够了。ide
若是将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;所以将原来的数与去减去1后的数字进行与运算后会发现为零。it
最快速的方法:(number & number - 1) == 0class