System.Enum
Многие языки .NET поддерживают побитовые операции с перечислениями, заданными в System.Flags
атрибут. MATLAB® язык не имеет эквивалентных операций и, следовательно, предоставляет методы образцов для выполнения побитовых операций над объектом перечисления. Побитовые методы bitand
, bitnot
, bitor
, и bitxor
.
Перечисление может задать bit flag. Битовый флаг позволяет создавать образцы перечисления для хранения комбинаций значений, заданных представителями. Например, файлы и папки имеют атрибуты, такие как Archive
, Hidden
, и ReadOnly
. Для данного файла выполните операцию на основе одного или нескольких из этих атрибутов. С помощью побитовых операторов можно создавать и тестировать на комбинации.
Чтобы использовать побитовые операторы, перечисление должно иметь:
The Flags
атрибут. В версии 4 среды эти перечисления также имеют HasFlag
способ.
Значения, которые соответствуют степеням 2
.
Используйте пример MATLAB, NetDocEnum.MyDays
перечисление, в следующих примерах.
Предположим, что у вас есть следующие запланированные действия:
Понедельник - Заседание Департамента в 10:00
Среда и пятница - совещание группы в 2:00
Четверг - Волей мяч ночь
Можно объединить представители MyDays
перечисление для создания переменного MATLAB с помощью bitor
способ, который соединяют два представителей. Например, чтобы создать переменную teamMtgs
дней встречи команды, тип:
teamMtgs = bitor(... NetDocEnum.MyDays.Friday,... NetDocEnum.MyDays.Wednesday);
Создайте переменную allMtgs
всех дней с собраниями:
allMtgs = bitor(teamMtgs,...
NetDocEnum.MyDays.Monday);
Чтобы увидеть, какие дни принадлежат каждой переменной, введите:
teamMtgs allMtgs
teamMtgs = Wednesday, Friday allMtgs = Monday, Wednesday, Friday
Предположим, что ваш менеджер отменяет собрание в среду на этой неделе. Как удалить Wednesday
от allMtgs
переменная, используйте bitxor
способ.
thisWeekMtgs = bitxor(allMtgs,NetDocEnum.MyDays.Wednesday)
thisWeekMtgs = Monday, Friday
Использование побитового метода, такого как bitxor
на allMtgs
не изменяет значение allMtgs
. Этот пример создает переменную, thisWeekMtgs
, который содержит результат операции.
Предположим, что вы постоянно меняете собрание группы с Wednesday
на Thursday
. Как удалить Wednesday
, использовать bitxor
, и использовать bitor
для добавления Thursday
. Поскольку это постоянное изменение, обновите teamMtgs
и allMtgs
переменные.
teamMtgs = bitor(... (bitand(teamMtgs,... bitnot(NetDocEnum.MyDays.Wednesday))),... NetDocEnum.MyDays.Thursday); allMtgs = bitor(teamMtgs,... NetDocEnum.MyDays.Monday); teamMtgs allMtgs
teamMtgs = Thursday, Friday allMtgs = Monday, Thursday, Friday
Создайте следующую RemindMe
функция:
function RemindMe(day) % day = NetDocEnum.MyDays enumeration teamMtgs = bitor(... NetDocEnum.MyDays.Friday,... NetDocEnum.MyDays.Wednesday); allMtgs = bitor(teamMtgs,... NetDocEnum.MyDays.Monday); if eq(day,bitand(day,teamMtgs)) disp('Team meeting today.') elseif eq(day,bitand(day,allMtgs)) disp('Meeting today.') else disp('No meetings today!') end end
Используйте RemindMe
функция:
today = NetDocEnum.MyDays.Monday; RemindMe(today)
Meeting today.
bitand
| bitnot
| bitor
| bitxor