2013-11-26 111 views
5

我發現在蘋果樣本代碼的幾行對SpriteKit請在蘋果SpriteKit示例代碼解釋uint32_t的和0x1 << 0

static const uint32_t missileCategory = 0x1 << 0; 

我知道什麼是static const但什麼是uint32_t的,什麼是0x1 << 0平均?這是一種十六進制?

+4

'uint32_t'是一個無符號的32位整數類型的名稱。 '0x1 << 0'是1左移零次,這本身很愚蠢,但很可能在下一行有一個'0x1 << 1',並且更多。這將位位置分配給該組中的常量。 –

+0

(這是基於C語言的一種非常常見的模式。) –

+0

http://stackoverflow.com/questions/13362084/difference-between-uint32-and-int32-t – Retro

回答

6

<<bitwise left shift(乘以2)運算符。

<< 0相同*1

所以等效的語句應該是:

static const uint32_t missileCategory = 0x1; 

我寫了更多關於這here

例如:

0x1 << 4將返回0x10

看着它的二進制:

00000001 << 4 = 00010000 

Decimaly說這意味着1 * 2 * 2 * 2 * 21 * 2^4

而且由於這是uint32_t值將actualy是

0x00000010 
+0

我認爲我現在得到了它的竅門,感謝您的解釋:) – Arbitur

+0

沒問題。第一次看到它可能會很棘手:) –