PHP bir tamsayı bir ikili eşdeğer nth bit (sağdan) almak nasıl?

3 Cevap php

(: 1101 ikili) Ben 13 ikili eşdeğeri 2. biraz bulmak istediğinizi varsayalım. Bu 0 dönmelidir.

3 Cevap

Tarafından güzel cevap Andrey, kesinlikle onun çözümü ile gitmek. İşte (Biliyorum, biliyorum ...) dize manipülasyonu kullanarak, ama bunu yapmak için başka bir yol:

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

İşte ayıklamak için biraz daha evrensel bir işlevi de aralıklarını ısırdı.

function extract_bits($value, $start_pos, $end_pos)
{
    $mask = (1 << ($end_pos - $start_pos)) - 1;
    return ($value >> $start_pos) & $mask;
}

13'ten ikinci bitin değerini ayıklamak için örneğin o olurdu:

extract_bits(13,1,2);