¿Cuál de las siguientes técnicas es la mejor opción para dividir un número entero entre 2 y por qué?
Técnica 1:
x = x >> 1;
Técnica 2:
x = x / 2;
Aquí x
hay un número entero.
x = x >>> 1
. También tenga en cuenta que, dependiendo de la plataforma y el compilador, puede ser bastante razonable optimizar manualmente las divisiones y multiplicaciones usando turnos. - Pensando en microcontroladores, por ejemplo, sin soporte directo de ALU para la multiplicación.
x /= 2
porque se x >>= 1
parece demasiado a la unión monádica;)
x = x / 2
lugar de hacerlo x /= 2
. Preferencia subjetiva quizás :)
⬜=
combinaciones, estas deberían usarse siempre que sea posible. Elimina el ruido y pone énfasis en el hecho de que x
se modifica , mientras que el =
operador general sugiere que adquiere un valor completamente nuevo independiente del anterior. - Siempre evitando los operadores combinados (para que sea legible por lo que alguien que sólo sabe operadores matemáticos) puede tener su punto así, pero entonces que había necesidad de renunciar a la extremadamente útil ++
, --
, +=
, también.
x
nuevamente, ninguno de los dos es apropiado de esta manera: debería ser cualquierax >>= 1
ox /= 2
, dependiendo de lo que pretenda expresar con la operación. No porque sea más rápido (cualquier compilador moderno compilará todas las variantes equivalentes a un ensamblaje idéntico y rápido de todos modos) sino porque es menos confuso.