Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2008-02-07 08:45:42.
Revizia anterioară Revizia următoare
Revizia anterioară Revizia următoare
Un mic puzzle
Am vazut urmatoarul puzzle pe un site cu intrebari de interviu Microsoft. Daca nu o stiti deja, incercati sa il rezolvati fara a cauta indicii pe net. E un test interesant de intelegere a operatiilor pe biti.
Ce returneaza functia foo, cand x e un intreg fara semn pe 32 de biti?
unsigned int foo(unsigned int x) {
x = ((x >> 1) & 0x55555555) | ((x & 0x55555555) << 1);
x = ((x >> 2) & 0x33333333) | ((x & 0x33333333) << 2);
x = ((x >> 4) & 0x0F0F0F0F) | ((x & 0x0F0F0F0F) << 4);
x = ((x >> 8) & 0x00FF00FF) | ((x & 0x00FF00FF) << 8);
return (x >> 16) | (v << 16);
}
Categorii: