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

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

Ответы [ 3 ]

23 голосов
/ 15 апреля 2010
5 голосов
/ 01 апреля 2013

Вот немного более универсальная функция для извлечения также битовых диапазонов.

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);
4 голосов
/ 15 апреля 2010

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

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