(转)二进制实战技巧

2018-08-13  本文已影响0人  one_zheng

转载: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
}

操作位代表类型

上一篇 下一篇

猜你喜欢

热点阅读