按位&(和)和| (或)對整數值內的所有位進行操作。它對每個位都獨立運行,並且經常與您一起使用,它有一組指示各種對象狀態的布爾真值(又名標誌)。它也可以用於(如你的例子)或測試一個特定的標誌,而不修改其他的。
整數中的位表示兩個值的冪。如果該位設置爲true,則其值爲2的冪。如果該位錯誤,則不包括在內。最低有效位b0代表2^0,位1代表2^1,依此類推。
例如,在值5 = 101二進制因爲5 = 2^2 + 2^0 = 4 + 1 = 5
按位或通過如果任一在結果中的兩位設置爲1作品操作數在該位置包含一個操作數。當且僅當兩個操作數在該位置具有1時,纔將每個位設置爲1,從而進行位運算。
例如:
Bitwise OR: 5 | 9 = 0101 | 1001 = 1101
Bitwise AND: 5 & 9 = 0101 & 1001 = 0001
使用這些運營商,如果集cubeindex位值的代表一組狀態(true或false值),那麼你可以使用相同的按位操作數,如果測試和一個特定的狀態是正確的,而忽略其他位。
在您的例子:
cubeindex |= 1
設置至少顯著位cubeindex爲真(1)不管它是什麼了。這是因爲任何位值爲0的位OR是相同的位值,而任何位值1的位OR總是1,因此與將該位設置爲1無關,而不管其先前的sta如何。它相當於:
cubeindex = cubeindex | 000000000000000001 = cube0,b0設置爲1
邏輯AND用於測試edgeTable [cubeindex]的最低有效位是否等於1.條件只有當該值的b0爲1時才爲真。爲什麼?因爲其他位並不重要,因爲它們與零進行按位與,總是零。
edgeTable [cubeindex] & 1 =位0的值