Какой из следующих методов является лучшим вариантом для деления целого числа на 2 и почему?
Техника 1:
x = x >> 1;
Техника 2:
x = x / 2;
Вот x
целое число.
x = x >>> 1
. Также обратите внимание, что в зависимости от платформы и компилятора может быть разумно вручную оптимизировать деления и умножения, используя сдвиги. - Думая о микроконтроллерах, например, без прямой поддержки ALU для умножения.
x /= 2
потому что x >>= 1
выглядит слишком похоже на монадное связывание;)
x = x / 2
вместо x /= 2
. Субъективное предпочтение может быть :)
⬜=
комбинации, их следует использовать, когда это возможно. Он устраняет шум и акцентирует внимание на том факте, что x
он изменен , в то время как общий =
оператор скорее предполагает, что он принимает совершенно новое значение, независимое от старого. - Всегда избегать комбинированных операторов (так что это читаемое так , кто знает только математические оператор) может иметь свою точку , а также, но тогда вы должны были бы отказаться от крайне полезных ++
, --
, +=
тоже.
x
снова, ни один из них не подходит таким образом: он должен быть либо,x >>= 1
либо вx /= 2
зависимости от того, что вы намерены выразить с помощью операции. Не потому, что это быстрее (любой современный компилятор все равно скомпилирует все эквивалентные варианты в одинаковую, быструю сборку), а потому, что это менее запутанно.