Która z poniższych technik jest najlepszą opcją do podzielenia liczby całkowitej przez 2 i dlaczego?
Technika 1:
x = x >> 1;
Technika 2:
x = x / 2;
Oto x
liczba całkowita.
x = x >>> 1
. Należy również pamiętać, że w zależności od platformy i kompilatora może być całkiem uzasadnione ręczne optymalizowanie podziałów i mnożenia za pomocą przesunięć. - Myśląc na przykład o mikrokontrolerach, bez bezpośredniej obsługi ALU dla mnożenia.
x /= 2
ponieważ x >>= 1
zbyt przypomina monadic bind;)
x = x / 2
zamiast x /= 2
. Subiektywne preferencje może :)
⬜=
kombinacje, należy ich używać, gdy tylko jest to możliwe. Usuwa hałas i kładzie nacisk na fakt, że x
jest modyfikowany , podczas gdy główny =
operator raczej sugeruje, że przyjmuje zupełnie nową wartość, niezależnie od starej. - Zawsze unikając operatorów połączonych (tak, to czytelny więc ktoś, kto zna tylko operatorów matematycznych) może mieć swój punkt jak dobrze, ale wtedy trzeba by zrezygnować z niezwykle przydatna ++
, --
, +=
, too.
x
, żadna z nich nie jest odpowiednia w ten sposób: powinna być albo,x >>= 1
albox /= 2
, w zależności od tego, co zamierzasz wyrazić za pomocą operacji. Nie dlatego, że jest szybszy (każdy nowoczesny kompilator i tak skompiluje wszystkie równoważne warianty do identycznego, szybkiego zestawu), ale dlatego, że jest mniej mylący.