Operacje bitowe w c

Operacje bitowe w c
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
#include <stdio.h>
unsigned setbits(unsigned x, int p, int n, unsigned y)
{
    return x & ~(~(~0 << n ) << (p+1-n))|(y & ~(~0<<n))<<(p+1-n);


}
int main(void)
{
    printf("%d", setbits(15,2,2,0));
    getchar();
return 0;

} 

Czy istnieje, różnica między ~0 a 1 ? w powyższym przykładzie nie widzę różnicy.
Czy (~0 << n ) oznacza, że najpierw negujemy 0 a potem przesuwamy czy najpierw przesuwamy a potem negujemy ?

robcio
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Opole
  • Postów: 533
0

http://nadzieja.el-kfa.net/strony/operators.html. Jak widać operator ~ ma wyższy priorytet niż przesunięcia bitowe. Zatem najpierw negujemy później przesuwamy

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.