Как работает битовая маскировка? - PullRequest
2 голосов
/ 09 ноября 2011

Я гуглил, и большинство уроков загадочны. Может ли кто-нибудь научить меня или даже указать мне на ресурс? У меня есть фон PHP.

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Контекст того, что вы используете, имеет значение.

Предположим, у вас есть набор из 8 логических опций.Давайте назовем их opt1 через opt8.Теперь по какой-то причине мы храним все эти опции в одном 8-битном значении.Обычно это не то, что вы хотите делать, но оно, безусловно, имеет свое применение, особенно для взаимодействия с существующими системами и API.

Итак, у нас есть следующее 8-битное (1-байтовое) число, представленное вдвоичный:

10010011

Каждый бит соответствует определенной опции, в следующем порядке:

87654321

У меня пока?Теперь давайте разберемся с некоторыми основными логическими операторами.Думай логично.Если true OR true, то мы получим true.Если true AND true, мы получим true.Если true AND false мы получим false.Мы можем сделать то же самое с побитовыми операторами.

Давайте попробуем 10010011 OR 11111111.По сути, мы сделаем этот логический оператор для каждого бита и получим результат 11111111.

Почему это полезно?Предположим, если мы хотим получить значение только одного места ... может быть, вариант 7. Мы могли бы сделать 10010011 AND 01000000.В итоге мы получим число, представляющее только один вариант.(Конечно, если вы хотите получить цифру 1 или 0, вам нужно будет поделить на соответствующее значение места.

Для этого есть много приложений. Как вы его используете, зависит от того, что вам нужно.

Статья в Википедии об этом неплохая: http://en.wikipedia.org/wiki/Mask_(computing)

1 голос
/ 09 ноября 2011

эта страница на самом деле кажется довольно хорошим вступлением с множеством примеров

http://php.net/manual/en/language.operators.bitwise.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...