Строка с ^
переключает бит, обозначающий HOVERING_ATTRIBUTE
. Если бит был 1, он равен 0; если бит был равен 0, он равен 1.
Строка с &= ~
очищает бит, который обозначает DISABLED_ATTRIBUTE
. Независимо от того, какое значение было до этого, бит теперь будет 0.
Одна вещь ~
инвертирует все биты DISABLED_ATTRIBUTE
, поэтому в результате получается то, что мы называем битовой маской, подходящей для ANDing: бит, за которым стоит DISABLED_ATTRIBUTE
, становится 0, а все остальные биты становятся 1 Таким образом, если вы И какое-либо значение с этой маской, в результате этот бит будет очищен, а все остальные биты останутся неизменными.