2010-04-15 4 views

Antwort

21
+12

und Funktion n-te Bit zu erhalten: Funktion nbit ($ number, $ n) {return ($ note >> $ n-1) & 1;} –

+0

@steeofrog: du hast Recht, aber für nth bit musst du pow (2, n-1) herausfinden, was wiederum durch shifting erledigt wird. – understack

+0

Und wenn Sie nicht wissen, was ist das letzte Bit auf 1 einer Variable $ Nummer gesetzt, dann können Sie tun: 'Funktion getLeftMost1Bit ($ Nummer) {return log ($ Nummer)/log (2); } ' – tonix

4

Nizza Antwort von Andrey zurückzukehren, auf jeden Fall mit seiner Lösung zu gehen. Hier ist eine andere Art und Weise es aber zu tun, String-Manipulation unter Verwendung von (ich weiß, ich weiß ...):

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

heilig sh .. das ist noch schwieriger zu lesen, dann bit Verschiebungen. Allerdings sehr originelle Art und Weise dies zu tun. –

+0

@Pim Lol, danke. Logischerweise ist es aber ziemlich einfach, vielleicht zu viel. ;) – deceze

4

hier ein bisschen mehr universelle Funktion ist auch Bereiche Bit zu extrahieren.

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

zum Beispiel von 13 Wert des zweiten Bits extrahieren würde es sein:

extract_bits(13,1,2); 
Verwandte Themen