判断2次方数
August 8, 2018 · View on GitHub
给定一个正整数,写一个函数来查找它是否为 2的幂.
简单解决方案
在简单解决方案中,我们只是将 数字除以2,除非数字变为1,不然每次我们这样做,我们都会检查除法后的余数是为0. 否则数字不能是2的幂.
按位解决方案
判断2次方数总是只有一位. 唯一的例外是带符号整数 (例如,值为-128的8位有符号整数如下所示: 10000000)
1: 0001
2: 0010
4: 0100
8: 1000
因此,在检查数字大于零之后,我们可以使用按位来测试一个,且只设置一个位.
number & (number - 1)
例如数字8操作将如下所示:
1000
- 0001
----
0111
1000
& 0111
----
0000