正如大家所熟知的那样,我们输入到计算机中的数据,都是以二进制的格式保存处理的,所以此方法就是利用这一特点来进行判别!(除2的零次方)
将2的整数幂次方转换为二进制后,仔细观察后会很容易发现一个特点:整串数字中只有一个1,在其后跟了多个0.
比如:
2:10;
4:100;
8:1000;
·
·
·
128:10000000
所以我们只要判断1后面是否跟了若干个0就可以了。
那么我们又会发现:这个数减去1的差,原来的那个“1”变为“0”,那n个“0”变为了“1”;紧接着将原来的数和减去1后的数进行“与”运算后会发现最终结果一定是“0”。
所以转换为代码:
(number & number - 1) == 0