理解SWT常量的按位OR

Cod*_*ein 2 java swt constants bitwise-operators

我正在研究一些SWT代码,我无法理解SWT常量是如何工作的,特别是它们的位置如何工作.

例如:

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

SWT.MULTIAPI中查找并发现它的值是1<<1.这是什么意思?我做了同样的事情SWT.FULL_SELECTION,发现它的价值13(更容易理解).

按位或这些是什么意思?有没有快速的方法来确定结果是什么?为什么这样做?

Baz*_*Baz 6

还有就是样式位的完整列表在这里和优良的解释这里和按位运算符的一般说明这里.

<<是说明左移位操作这里.


我们举一个例子:

假设你有两个样式位:

SWT.FOO = 4  // 100 binary
SWT.BAZ = 2  // 010 binary
Run Code Online (Sandbox Code Playgroud)

如果现在就SWT.FOO | SWT.BAZ到了Table,结果将是:

   100
OR 010
   ---
   110 // 6 in decimal
Run Code Online (Sandbox Code Playgroud)

该表现在想知道您是否选择了SWT.BAZ.它可以通过检查以下内容来实现:

int styleBit = 6; // 110 binary

if((styleBit & SWT.BAZ) == SWT.BAZ)
{
    System.out.println("SWT.BAZ selected");
}
Run Code Online (Sandbox Code Playgroud)

您可以在此处验证此计算.