Задать вопрос
des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Битовая маска в пхп?

есть желание хранить булевые значения как битовую маску.
например да-нет-да будет 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)
как теперь понять какой бит записан?
  • Вопрос задан
  • 3802 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@vilgeforce
Раздолбай и программист
Пример чего вы хотите? Запись n-ного бита в число: store = store | (1<<n), учитывая что биты считаются с нуля.
Ответ написан
Pjeroo
@Pjeroo
Веб-разработчик
$var = base_convert(1010, 2, 10); // переводим битовую маску в int
$bit_check = 4; // порядковый номер бита справа налево, который хотим проверить
var_dump((bool)($var & (1 << ($bit_check - 1)))); // собственно проверка установлен ли бит

Есть такой вариант
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Akdmeh
@Akdmeh
PHP, Yii2, Music
habrahabr.ru/post/134557
вот статья, которая отвечает на все ваши вопросы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы