// 只出现一次的数字
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
}