proste pytanie, ale nie mogę dość wydają się zrozumieć to:Bitshifting pomnożyć liczbę całkowitą przez 10
Jeśli mam całkowitą, powiedzmy 12, a ja wykonać następujące Bit-manipulacji na nim:
int i = 12;
i = (i << 3) + (i << 1);
Kończę z 120 (12 * 10). Tak jest w przypadku dowolnej liczby.
Czy ktoś może mi wyjaśnić, zwięźle, dlaczego to działa? (Oczywiście brakuje mi czegoś bardzo szczątkowego, jeśli chodzi o bitshift).
Dzięki
Czy wiesz jak bitshifting działa? 'i << 3' to i * (2^3) lub i * 8, a' i << 1' to i * (2^1) lub i * 2, więc jeśli je dodasz, otrzymasz i * 10 . –
Idziesz: http://en.wikipedia.org/wiki/Multiplication_algorithm#Shift_and_add – Stefan
Zauważ, że każdy * dobry * kompilator zrobi to lepiej niż ty ... Wystarczy użyć zwykłego mnożenia, a optymalizator zrobi to, co jest najlepiej dla ciebie na obecnej platformie. –