Задать вопрос

Применение побитовых операторов в PHP и Javascript?

Всем известно о наличии побитовых операторов (&, |, ^, >>, << и т.п.) в наиболее популярных языках веб-программирования (в PHP и Javascript они точно есть!). В книжках тоже о них всегда пишут, потому что они есть и без них книжка будет неполной. А теперь вопрос: какие примеры применения этих операторов в задачах веб-программирования вы знаете?


P.S. По этой теме в Q&A нашел только это: habrahabr.ru/qa/813/
  • Вопрос задан
  • 5143 просмотра
Подписаться 4 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@korvindest
Ну например, если вам надо реализовать алгоритм поиска решения делением отрезка пополам, то эффективнее использовать сдвиг вправо, а не деление на 2.

Кроме этого побитовые операторы актуальны при работе с цветом RGB если все три (или 4) составляющих хранятся в одном int.

Еще можно вспомнить про перевод в двоичную и шестнадцатеричную систему исчисления для удобного представления id сессии или чего то подобного.
Ну это как примеры…

Естественно все это нужно, только в тех случаях, когда нету готовых функций встроенных в язык.
Ответ написан
Комментировать
Для использования флагов используются битовые операции. Взять хотя бы ошибки. Надо выставить все ошибки, кроме depricated, то пишем:
E_ALL & ~E_DEPRECATED.
Ответ написан
Aco
@Aco
Заклинатель кода
У меня в проекте есть объект имеющий 42 различных состояния, на подобии сброшен, завершился с ошибкой, процессе того, в процессе сего… и т.д. На каждое состояние выделен 1 бит, таким образом все возможные состояния вмещаются в одно свойство объекта. Так вот, есть много мест где мне надо решать что делать опираясь на эти флаги, для примера сравните 2 куска кода.
if($this->_sock && !empty($this->_opts["keep-alive"]) && $this->_is_opened && $this->_step == "proceed") {
}

или
if($this->_state & self::CAN_PROCEED) {
}

таким образом можно вместо кучи свойств и проверок ключей у массивов/объектов делать одну битовую операцию
Ответ написан
mark_ablov
@mark_ablov
Например можно не заводить 32 булевых поля в mysql, а «упаковать» всё в один int.
Ответ написан
А еще как пример с web душком это получение параметров Google PR.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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