转载:https://blog.csdn.net/lirenzuo/article/details/79052523
判断一个数是否是2的幂次方的方法
func isPowerOfTwo(val int) bool {
return val & (val -1) == 0
}
如果一个数是2的n次方,那么这个数用二进制表示时其最高位为1,其余位为0,(val-1)和val都错开了0和1,那么&一定是0。
如果该数是无符号整数,也可以使用:
func isPowerOfTwo(val int) bool {
return val & (-val) == val
}
扩展下,如何判断一个无符号数是2的n次方-1
func isPowerOfTwo(val int) bool {
return (val & (val+1)) == 0
}
网友评论