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 xliczba 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 /= 2ponieważ x >>= 1zbyt przypomina monadic bind;)
x = x / 2zamiast 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 xjest 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 >>= 1albox /= 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.