我發現在蘋果樣本代碼的幾行對SpriteKit請在蘋果SpriteKit示例代碼解釋uint32_t的和0x1 << 0
static const uint32_t missileCategory = 0x1 << 0;
我知道什麼是static const
但什麼是uint32_t
的,什麼是0x1 << 0
平均?這是一種十六進制?
我發現在蘋果樣本代碼的幾行對SpriteKit請在蘋果SpriteKit示例代碼解釋uint32_t的和0x1 << 0
static const uint32_t missileCategory = 0x1 << 0;
我知道什麼是static const
但什麼是uint32_t
的,什麼是0x1 << 0
平均?這是一種十六進制?
<<
是bitwise left shift(乘以2)運算符。
<< 0
相同*1
所以等效的語句應該是:
static const uint32_t missileCategory = 0x1;
我寫了更多關於這here。
例如:
0x1 << 4
將返回0x10
。
看着它的二進制:
00000001 << 4 = 00010000
Decimaly說這意味着1 * 2 * 2 * 2 * 2
或1 * 2^4
而且由於這是uint32_t
值將actualy是
0x00000010
我認爲我現在得到了它的竅門,感謝您的解釋:) – Arbitur
沒問題。第一次看到它可能會很棘手:) –
'uint32_t'是一個無符號的32位整數類型的名稱。 '0x1 << 0'是1左移零次,這本身很愚蠢,但很可能在下一行有一個'0x1 << 1',並且更多。這將位位置分配給該組中的常量。 –
(這是基於C語言的一種非常常見的模式。) –
http://stackoverflow.com/questions/13362084/difference-between-uint32-and-int32-t – Retro