2

我正在检查一些 SWT 代码,但我无法理解 SWT 常量是如何工作的,尤其是它们的 bitwose OR 是如何工作的。

例如:

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

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

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

4

1 回答 1

6

这里有样式位的完整列表,这里有很好的解释,这里有关于位运算符的一般解释

<<是这里解释的左位移位运算符。


让我们举个例子:

假设您有两个样式位:

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");
}

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

于 2013-05-28T19:04:40.833 回答