Riporto un esempio preso da un libro per mostrare l'utilizzo degli operatori per la manipolazione dei bit:
codice:
/* getbits: estrae n bit di x a partire dalla posizione p */
unsigned getbits(unsigned x, int p, int n)
{
return (x >> (p+1-n)) & ~(~0 << n);
}
Secondo quanto letto l'operazione di shift >> ammette uno shift di tot posizioni con tot non negativo. E fin qui ok.
Ma ipotizzando di passare alla funzione x,2,5 ottengo uno shift di -2 posizioni
Poi mi sono fermato con la comprensione del codice e credo che chiederò il vostro aiuto