2013-05-28 3 views
2

Я изучаю некоторый SWT-код, и мне трудно понять, как работают константы SWT и, в частности, как работает их bitwose OR.Понимание побитового ИЛИ констант SWT

Например:

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

Я посмотрел SWT.MULTI в API и обнаружил, что его значение 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.BAZ к Table, результат будет:

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

Смежные вопросы