¿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í xhay 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 /= 2porque se x >>= 1parece demasiado a la unión monádica;)
x = x / 2lugar 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 xse 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.
xnuevamente, ninguno de los dos es apropiado de esta manera: debería ser cualquierax >>= 1ox /= 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.