Ответ 1
http://php.net/manual/en/language.operators.bitwise.php
($x >> 1) & 1
Предположим, что я хочу найти 2-й бит в двоичном эквиваленте 13 (двоичный: 1101). Он должен вернуть 0.
http://php.net/manual/en/language.operators.bitwise.php
($x >> 1) & 1
Хороший ответ Андрей, безусловно, пойдем с его решением. Здесь другой способ сделать это, хотя, используя строковые манипуляции (я знаю, знаю...):
substr(decbin($x), -2, 1)
Ниже приведена более универсальная функция для извлечения диапазонов бит.
function extract_bits($value, $start_pos, $end_pos)
{
$mask = (1 << ($end_pos - $start_pos)) - 1;
return ($value >> $start_pos) & $mask;
}
например, чтобы извлечь значение второго бита из 13, это будет:
extract_bits(13,1,2);