Citation:
"function that returns the ()right ajusted) n-bit field of x that begins ar position p . . . We assume that bit position 0 is at the right end and that n and p are sensible positive values.. For example, getbits(x, 4, 3) returns the tree bits in position 4, 3 and 2, right ajusted."" p49
la fonction retourne n bits du champ de bite de x commençant par la position p . . . Nous assumons que le bit # 0 est à droite et que p et n sont des valeurs positives. . . . getbits(x, 4, 3) retourne les bits en position 4, 3 et 2 alignés à droite.
/* getbits: get n bits à partir de la position p */
unsigned getbits(unsigned x, int p, int n)
{
return (x >> (p+1-n)) & ~(~0 << n);
}
x>>(4+1-3) & ~ (11111000)
x>>2 & 0000 0111
0001 1100
Ex: getbits(28, 4, 3)
0000 0111
& 0000 0111
_________________
0000 0111
28/4 = 7
------------
0001 1001
Ex: getbits(25, 4, 3)
0000 0110
& 0000 0111
_________________
0000 0110
25/4 = 6 (6.25)
------------
0101 0001
Ex: getbits(81, 4, 1) ([4+1-1] décale de 4 vers la droite)
0000 0101
& 0000 0001
_________________
0000 0001
81/16 = 6 (1)
La fonction n'est juste que pour les nombres pairs?