判断一个数是不是2的幂次

1. 用一个更大的2的幂次数来整除当前数

比如 2 10 2^{10} 210一定能够整除 2 1 , 2 2 . . . 2^1, 2^2... 21,22...等等。

2. 使用位运算来判断

当一个数为2的幂次时,其二进制表示一定只有一位是1,其形式如 00100000 00100000 00100000,而把它减一后得到形如 00011111 00011111 00011111,即两数相与等于0.

if ((i & (i-1) == 0)
	// i is power of 2

你可能感兴趣的:(常用小技巧)