next up previous contents
Next: Probleme propuse Up: Operatii la nivel de Previous: Utilizarea operatorilor   Cuprins


Probleme rezolvate

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.

Figura 3.1: Functia getbits
\begin{figure}\begin{center}
\epsfig{file=getbits.eps} \end{center}\end{figure}

#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:



Cristian Gavrila 2001-10-02