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