2013-05-28 36 views
2

我正在檢查一些SWT代碼,並且無法理解SWT常量的工作方式,特別是如何使用它們的「或」運算。瞭解SWT常量的按位或運算

例如:

final Table leftTable = new Table(parent, SWT.MULTI | SWT.FULL_SELECTION);

我在API擡頭SWT.MULTI,發現其值爲1<<1。這是什麼意思?我爲SWT.FULL_SELECTION做了同樣的事情,發現它的值爲13(更容易理解)。

這是什麼意思?有沒有快速確定結果的方法?爲什麼這樣做?

+0

如果你不知道'1 << 1'是什麼意思,我寧願推薦看一看Java教程。 – Mot

回答

6

有一個完整列表的樣式位here和一個很好的解釋here和位運算符here的一般解釋。

<<是左移位運算符,如解釋here所述。


讓我們做出了榜樣:

假設你有兩個樣式位:

SWT.FOO = 4 // 100 binary 
SWT.BAZ = 2 // 010 binary 

如果現在就SWT.FOO | SWT.BAZTable,結果將是:

100 
OR 010 
    --- 
    110 // 6 in decimal 

該表現在想知道您是否選擇了SWT.BAZ。它可以通過檢查以下內容來實現:

int styleBit = 6; // 110 binary 

if((styleBit & SWT.BAZ) == SWT.BAZ) 
{ 
    System.out.println("SWT.BAZ selected"); 
} 

您可以驗證此計算here

+0

很好的解釋 - 謝謝! – CodyBugstein

+0

@Imray不客氣。 – Baz