经典算法-位运算
Posted huangliang-hb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了经典算法-位运算相关的知识,希望对你有一定的参考价值。
// 只出现一次的数字 func singleNumber(nums []int) int { num := 0 for _, v := range nums { num ^= v } return num } // 二进制中1的个数 func hammingWeight(num uint32) int { sum := 0 for ; num > 0; num >>= 1 { if num & 1 == 1 { sum++ } } return sum } // 两数相加(不使用加减乘除) func twoSum(a, b int) int { for b != 0 { a, b = a^b, a&b<<1 } return a } // 交换两个整数a,b值 func Exchange(a, b int32) (int32, int32) { a = a ^ b b = b ^ a a = a ^ b return a, b } // 编写随机数函数 func randnum(n int) int { rand.Seed(time.Now().UnixNano()) num := 0 for i := 0; i < int(math.Ceil(math.Log2(float64(n)))); i++ { a := rand.Intn(2) // 随机0或1 if a == 1 { num |= a << i } } if num < n { return num } return n } 游戏项目常用到的 userId |= sererNo << 18 // update 设置 vip |= 0x1 << flag // get 获取 func (p *Player) GetCommonFlag(flag uint32) int32 { return vip >> flag & 0x1 }
以上是关于经典算法-位运算的主要内容,如果未能解决你的问题,请参考以下文章