Битовая маска в пхп? есть желание хранить булевые значения как битовую маску.
например да-нет-да будет 1-0-1
как понимаю можно хранить как то так 2^1 + 2^0 + 2^3 = 2+1+8=11
не могу найти пример. и стоит ли заморачиваться и проще хранить как 101 и тупо выдергивать элемент по номеру в кортеже? вариант со степенями двойки вроде бы позволяет неграниченно увеличивать длину кортежа. правда и сложность декодирования выше.
----$store = 0;
$n = 2;
$store = $store | (1<<$n);
$n = 4;
$store = $store | (1<<$n);
var_dump($store);
на выходе int(20)
как теперь понять какой бит записан?

21 Авг 2019 в 06:11
164 +1
0
Ответы
1

Для понимания какой бит записан в числе можно использовать операцию побитового И (&) с числом, содержащим только один установленный бит на нужной позиции. Например, чтобы определить установлен ли бит на позиции 4 в числе $store, можно использовать следующий код:

$bit_position = 4;
$is_set = ($store & (1 << $bit_position)) > 0;
echo $is_set ? 'Бит установлен' : 'Бит не установлен';

Этот код проверит установлен ли бит на позиции 4 в числе $store и выведет соответствующий текст в зависимости от результата проверки.

Таким образом, использование битовой маски в PHP позволяет эффективно хранить и управлять наборами булевых значений, а проверка конкретного бита в числе делается с помощью побитового И (&) с числом, содержащим установленный бит на нужной позиции.

20 Апр в 13:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир