Как получить n-й бит (справа) в двоичном эквиваленте целого числа в PHP?

Предположим, что я хочу найти 2-й бит в двоичном эквиваленте 13 (двоичный: 1101). Он должен вернуть 0.

Ответы

Ответ 2

Хороший ответ Андрей, безусловно, пойдем с его решением. Здесь другой способ сделать это, хотя, используя строковые манипуляции (я знаю, знаю...):

substr(decbin($x), -2, 1)

Ответ 3

Ниже приведена более универсальная функция для извлечения диапазонов бит.

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);