Atenţie! Aceasta este ultima versiune a paginii, scrisă la 2008-11-15 13:41:14.
Revizia anterioară Revizia următoare
Revizia anterioară Revizia următoare
Un mic puzzle
Am vazut urmatorul puzzle pe un site cu intrebari de interviu Microsoft. Daca nu il stiti deja, incercati sa il rezolvati singuri 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) | (x << 16);
}
Categorii:
remote content