Битовая маска в пхп? есть желание хранить булевые значения как битовую маску.
например да-нет-да будет 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<

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

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

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

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

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

20 Апр 2024 в 13:22
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир