¿Usaría num% 2 o num & 1 para verificar si un número es par?

Bueno, hay al menos dos formas de determinar si un número dado es par o no:

 1. if (num%2 == 0) { /* even */ } 
 2. if ((num&1) == 0) { /* even */ }

Considero que la segunda opción es mucho más elegante y significativa, y esa es la que suelo usar. Pero no es solo una cuestión de gusto; El rendimiento real puede variar: por lo general, las operaciones a nivel de bits (como el logial, y aquí) son mucho más eficientes que una operación de mod (o div). Por supuesto, puede argumentar que algunos compiladores podrán optimizarlo de todos modos, y estoy de acuerdo ... pero otros no.

Otro punto es que el segundo podría ser un poco más difícil de comprender para los programadores menos experimentados. En ese sentido, respondería que probablemente solo beneficiará a todos si estos programadores tardan un poco en entender las declaraciones de este tipo.

¿Qué piensas?

Los dos fragmentos son correctos solo sinum es un int sin signo o un número negativo con una representación de complemento a dos. - Como afirman algunos comentarios con justa razón.

Respuestas a la pregunta(12)

Su respuesta a la pregunta