Merge pull request #1132 from akiyamaneko/patch-4

NumberUtil 增加新功能 isPowerOfTwo 判断整数是否是2的幂
This commit is contained in:
Golden Looly 2020-09-28 15:04:09 +08:00 committed by GitHub
commit d763282047
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View File

@ -2157,6 +2157,17 @@ public class NumberUtil {
return number.pow(n);
}
/**
* 判断一个整数是否是2的幂
*
* @param n 待验证的整数
* @return 如果n是2的幂返回true, 反之返回false
*/
public static boolean isPowerOfTwo(long n) {
return (n > 0) && ((n & (n - 1)) == 0);
}
/**
* 解析转换数字字符串为int型数字规则如下
*

View File

@ -254,4 +254,14 @@ public class NumberUtilTest {
final BigDecimal mul = NumberUtil.mul(new BigDecimal("10"), null);
Assert.assertEquals(BigDecimal.ZERO, mul);
}
@Test
public void isPowerOfTwoTest() {
Assert.assertEquals(false, NumberUtil.isPowerOfTwo(-1));
Assert.assertEquals(true, NumberUtil.isPowerOfTwo(16));
Assert.assertEquals(true, NumberUtil.isPowerOfTwo(65536));
Assert.assertEquals(true, NumberUtil.isPowerOfTwo(1));
Assert.assertEquals(false, NumberUtil.isPowerOfTwo(17));
}
}