回答
這是位或。在這種情況下,編寫位掩碼很有用。這些標誌定義了一個設置了一位的數字,當你將它們放在一起時,最終會得到一個兩位都置位的數字。
例如: 我不知道這些標誌的精確值,但讓我們想象它們是:
#define GL_COLOR_BUFFER_BIT 0x01
#define GL_DEPTH_BUFFER_BIT 0x08
如果您在二進制寫那些了,你會得到:
GL_COLOR_BUFFER_BIT = 00000001
GL_DEPTH_BUFFER_BIT = 00001000
如果你按位或那些在一起,您可以設置輸出爲1位,如果該位在任一GL_COLOR_BUFFER_BIT
ORGL_DEPTH_BUFFER_BIT
,所以設置:
GL_COLOR_BUFFER_BIT = 00000001
GL_DEPTH_BUFFER_BIT = 00001000
= 00001001
所以你最終得到的數字是0x09。
你打電話給你檢查通過了號碼的功能,並在此基礎上位設置,它知道你傳遞什麼標誌。
這是一個按位或操作。按位或以下面顯示的方式工作:
讓我們假設您有2個字節a,b。
a = 0 0 1 1 0 1 0 1
b = 1 0 1 1 0 0 0 0
按位運算符在bit level
上工作。會發生什麼,它會依次執行每一個操作並對其執行操作。如果至少有一個(或兩個)位是1,則結果字節中的相應位也將是1。如果他們都是0,那麼結果位也將是0
所以按位或a和b將做到這一點:
a = 0 0 1 1 0 1 0 1
b = 1 0 1 1 0 0 0 0
c = 1 0 1 1 0 1 0 1
首先位0和1有一個1在C位等等將是1. 秒位0和0,所以下一個結果位將是0. 第三位都是1。至少存在一個1,因此c中的下一位將是1 ...,依此類推。
希望它爲你清除它。
PS。我在這裏使用了虛擬位,並且決不對應於GL_COLOR_BUFFER_BIT
或GL_DEPTH_BUFFER_BIT
使用的實際值。
大多數按位運算符用於對值執行掩碼或將兩個值組合在一起。
|
將二者結合起來一起 &
將強制口罩
讓我們假設您將得到一個數值,你想使它看起來像這樣(我們將使用&
執行這一面罩)。
0 0 0 1 1 1 1 0
0將對應於不應該有值的位置,1對應於您感興趣並想要提取的位。
a = 1 0 1 0 0 1 1 0
mask = 0 0 0 1 1 1 1 0
現在在所有位都高於0將被丟棄,結果將在這些位0,因爲和&你需要兩個位是1秒,以導致位1
在哪裏你的掩碼中有1,這就是結果中可能出現1的地方。因此,在每個位上使用&時,您最終會得到此值。
result = 0 0 0 0 0 1 1 0
如果你仔細看看結果中的4位,它們與掩碼中的1s位置相同,只是從a中移出。所以它真的做了什麼,刪除了掩碼有0的位,並用1保留。
這取決於你正在使用的語言,但在很多這是bitwise or。這通常用於將幾個編碼爲一位的標誌傳遞給一個函數。例如,如果你有兩個標誌
const char FLAG_1 = 0x01;
const char FLAG_2 = 0x02;
然後FLAG_1 | FLAG_2
是0x03
。對於按位不相交的位,這相當於加法,起初可能會造成混淆。在通話中的位進行邏輯或運算
func(FLAG_1 | FLAG_2) // set both FLAG_1 and FLAG_2
功能func
然後可以單獨使用bitwise and測試位:
void func(char flags) {
if(flag & FLAG_1) { // test for FLAG_1
}
if(flag & FLAG_1) { // test for FLAG_2
}
}
- 1. ||是什麼運營商呢?
- 2. 什麼是!運營商呢?
- 3. 什麼|運營商呢?
- 4. '= |'是什麼意思運營商呢?
- 5. 什麼是按位或|運營商呢?
- 6. C#什麼是'?'運營商
- 7. 在下面的JavaScript函數中,||是什麼運營商呢?
- 8. 冒號「:」和問號「?」是什麼?運營商呢?
- 9. 什麼〜運營商
- 10. 是什麼SIM運營商和網絡運營商
- 11. 什麼是「===!」運營商在做什
- 12. javascript:什麼是不是? (!!運營商)
- 13. 運營商做什麼?
- 14. 運營商:在C,它是什麼?
- 15. java |運營商是爲了什麼?
- 16. 什麼是運營商=返回?
- 17. ?的含義是什麼?和??運營商
- 18. 運營商#::是什麼意思?
- 19. 什麼是紅寶石!運營商?
- 20. 運營商*是undefined
- 21. 你爲什麼要用!!運營商
- 22. 運營商'+'發生了什麼?
- 23. 爲什麼運營商==在C++
- 24. |有什麼區別?和||或運營商?
- 25. 什麼運營商<>在VBA
- 26. C未運營商爲什麼會
- 27. MySQL <=>運營商做什麼?
- 28. Php:|有什麼區別?和||運營商
- 29. 〜和!有什麼區別?運營商?
- 30. 熊貓的子運營商做什麼?
你能在更詳細一點解釋究竟是什麼意思? – user2101672 2013-02-24 13:28:52
感謝您的解釋! – user2101672 2013-02-24 13:34:35