Sa se scrie o functie getbits(x,p,n) care returneaza, aliniat la dreapta, un câmp de n biti dintr-un întreg fara semn x, începând cu pozitia p a lui x, dupa cum se arata în figura 3.1. Se considera ca bitul cel mai putin semnificativ al lui x are pozitia 0.
#include <stdio.h>
unsigned getbits(unsigned x, int p, int n)
{
return (x >> (p+1-n)) & ~(~0 << n);
}
void main(void)
{
unsigned x;
int p=6,n=3;
printf("Numar initial: ");
scanf("%u", &x);
printf("Valoarea extrasa: %u\n", getbits(x,p,n));
}
Se observa ca în functia getbits: