Это отключит любую константу.
Например, давайте рассмотрим гипотетический пример кода, который бы представлял состояние окна:
WS_HASBORDER = 0x01;
WS_HASCLOSEBUTTON = 0x02;
WS_HASMINIMIZEBUTTON = 0x04;
WS_HASMAXIMIZEBUTTON = 0x08;
WS_ISMAXIMIZED = 0x10;
Мы могли бы представить «состояние» окна, используя
windowState = WS_HASBORDER | WS_HASCLOSEBUTTON | ... etc
Теперь, допустим, мы хотим "отключить" одно из этих состояний, ну, вот что делает ваш пример кода ...
windowState &= ~WS_HASBORDER
Теперь, что делает приведенный выше код, он получает комплимент [я думаю, вы могли бы назвать его инвертированными битами] того, что справа от него, WS_HASBORDER.
Итак ... WS_HASBORDER имеет один бит, а все остальное выключено. В его комплимент включены все биты, кроме одного, который был отключен ранее.
Поскольку я представлял многие константы в байтах, я просто покажу вам пример [не то, чтобы javascript не представлял числа в байтах, и вы не можете это сделать]
WS_HASBORDER = 0x01; //0000 0001
WS_HASCLOSEBUTTON = 0x02; //0000 0010
WS_HASMINIMIZEBUTTON = 0x04; //0000 0100
WS_HASMAXIMIZEBUTTON = 0x08; //0000 1000
WS_ISMAXIMIZED = 0x10; //0001 0000
_ сейчас для примера
windowState = WS_HASBORDER | WS_HASCLOSEBUTTON | WS_HASMINIMIZEBUTTON |
WS_HASMAXIMIZEBUTTON | WS_ISMAXIMIZED;
0000 0001
0000 0010
0000 0100
0000 1000
and) 0001 0000
--------------
0001 1111 = 0x1F
Итак ... windowState получает значение 0x1F
windowState & = ~ WS_HASMAXIMIZEBUTTON
WS_HASMAXIMIZEBUTTON: 0000 1000
~WS_HASMAXIMIZEBUTTON: 1111 0111
.. Для завершения нашего расчета
windowState
&) ~WS_HASMAXIMIZEBUTTON
becomes
0001 1111
&) 1111 0111
-------------
0001 0111 = 0x07
Вот ваши итоговые флаги:
На:
WS_HASBORDER
WS_HASCLOSEBUTTON
WS_HASMINIMIZEBUTTON
WS_ISMAXIMIZED
Off:
WS_HASMAXIMIZEBUTTON
Надеюсь, это поможет. Вернуться к откладывать домашнее задание я иду! ха-ха.