Это пример битовой маскировки .Что они делают, так это определяют серию масок (Create, Remove, Write), которые являются целыми числами 1,2,4,8,16,32 и т. Д.Вы передаете одно значение операции, которое может иметь несколько операций, и оно определяет, какую операцию выполнить, на основе какого бита переворачивается.Это имеет больше смысла, если вы думаете об этих числах в побитовом порядке.4 == 00000100, значение для Удалить.Если вы передадите код операции, скажем, 6, при сравнении 00000110 && 00000100 == 00000100 вы получите значение true, поскольку бит, относящийся к типу Remove, третьему младшему значащему биту, равен 1.
Inменее грубый и конкретный способ, это в основном способ передать несколько кодов операций с одним байтом.Причина, по которой они выполняют побитовое И, а затем сравнивают, заключается в том, что он позволяет им проверять, был ли перевернут этот конкретный бит, игнорируя при этом остальные биты.