美文网首页
(转)二进制实战技巧

(转)二进制实战技巧

作者: one_zheng | 来源:发表于2018-08-13 23:46 被阅读0次

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

操作位代表类型

相关文章

网友评论

      本文标题:(转)二进制实战技巧

      本文链接:https://www.haomeiwen.com/subject/abwpbftx.html