我正在玩一个类似Flappy Bird的克隆游戏,但是我无法理解下面代码的含义
let birdCategory: UInt32 = 1 << 0
let worldCategory: UInt32 = 1 << 1
let pipeCategory: UInt32 = 1 << 2
let scoreCategory: UInt32 = 1 << 3
如果这个问题很明显,我很抱歉。我已经试着寻找答案,但没有找到。谢谢。
我正在玩一个类似Flappy Bird的克隆游戏,但是我无法理解下面代码的含义
let birdCategory: UInt32 = 1 << 0
let worldCategory: UInt32 = 1 << 1
let pipeCategory: UInt32 = 1 << 2
let scoreCategory: UInt32 = 1 << 3
如果这个问题很明显,我很抱歉。我已经试着寻找答案,但没有找到。谢谢。
那就是按位左移运算符
基本上它是这么做的
// moves 0 bits to left for 00000001
let birdCategory: UInt32 = 1 << 0
// moves 1 bits to left for 00000001 then you have 00000010
let worldCategory: UInt32 = 1 << 1
// moves 2 bits to left for 00000001 then you have 00000100
let pipeCategory: UInt32 = 1 << 2
// moves 3 bits to left for 00000001 then you have 00001000
let scoreCategory: UInt32 = 1 << 3
你最终会拥有什么。birdCategory = 1
worldCategory = 2
pipeCategory = 4
scoreCategory= 8
a << x
等同于a * 2^x。通过将位向左移动一位,您可以使值加倍。这样做x次将产生2^x倍的值,当然,除非溢出。