這是使用所謂bitwise math完成。具體而言,他們正在使用&
(按位和)操作來檢查是否設置了值。爲了這裏的論點,我們將使用4位數字,以保持簡短。
數7,在4位二進制,如下:
0111
每個數字具有被每次加倍的值,並且所有這些加在一起,以使7總數。看,它的工作原理是這樣:
0 1 1 1
^ ^^^
| | | |
8 4 2 1
所以,從本質上講,它是:現在
0 * 8 + 1 * 4 + 1 * 2 + 1 * 1 = 7
,有位明智的數學,特別是按位,而且,我們可以說我們只關心某些列中的位 - 基本上,每列中的位必須是1,否則它將被設置爲零。因此,按位數學檢查「4」內部「7」:
0111 (7)
& 0100 (4)
______
0100 (4)
由於該值不爲零,這是事實,我們可以確定值4是值7的內部現在考慮11號:
1 0 1 1
^ ^^^
| | | |
8 4 2 1
1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 11
嘗試在
1011 (11)
& 0100 (4)
______
0000 (0)
尋找4由於它的值爲0,這是假的,我們可以認爲數(4)不是裏面的編號爲11.
類似地,我們可以得出結論,數字4,2和1,但不爲,在7 11,我們通過處理數字作爲一系列位,而不是一個單一的8,圖2和1。值,我們可以在一個整數內存儲多個標誌。它
肯定做按位數學一些更多的閱讀,正確使用,只是不嘗試它可以是非常有用的鞋拔到的一切。
我認爲你應該做一些研究自己進入位運算符是什麼以及如何他們每個人的工作。 –
哦,非常感謝,真的我沒有線索什麼谷歌:) – Adrian
你知道什麼,我看了以後,它幾乎立即有感:))謝謝! – Adrian