前言
概念:
如果一個數是2的冪,那么它的二進制是這樣的:
2 10
4 100
8 1000
16 10000
也就是第一個是1,其他都是0。
然后-1的話:
1 01
4 11
8 111
16 1111
正文
(num&(num-1))==0
就是了。
解釋,為什么不是2的冪就不會等於0呢?
比如說3
3 111
2 010
那么是不會等於0的,因為其他位會補位,也就是一定有一個同為1的。
所以可以這樣來運算。
概念:
如果一個數是2的冪,那么它的二進制是這樣的:
2 10
4 100
8 1000
16 10000
也就是第一個是1,其他都是0。
然后-1的話:
1 01
4 11
8 111
16 1111
(num&(num-1))==0
就是了。
解釋,為什么不是2的冪就不會等於0呢?
比如說3
3 111
2 010
那么是不會等於0的,因為其他位會補位,也就是一定有一個同為1的。
所以可以這樣來運算。
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。