Operacje bitowe w c

0
#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 ?

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1