什么向左转移(<<<&);

时间:2015-05-19 17:50:52

标签: xcode swift bit-shift

我正在搞乱Flappy Bird克隆,我无法弄清楚以下代码的含义是什么

let birdCategory: UInt32 = 1 << 0
let worldCategory: UInt32 = 1 << 1
let pipeCategory: UInt32 = 1 << 2
let scoreCategory: UInt32 = 1 << 3

很抱歉,如果这很明显,我已经尝试寻找答案,但无法找到答案。感谢

2 个答案:

答案 0 :(得分:21)

那是bitwise left shift operator

基本上就是这样做

// 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

答案 1 :(得分:2)

首先,您发布了Swift代码,而不是Objective-C。

但我认为这是一个字节转换,就像普通的旧C一样。

a << x相当于* 2 ^ x。通过将位向左移动一位,可以使值加倍。这样做x次将产生值的2 ^ x倍,当然,除非它溢出。

您可以阅读有关如何在计算机here中表示数字的信息。