Cita:
Iniciado por Raziel_Ravenheart Yo creo que aunque tienes razón, la opción a utilizar en cualquier lenguaje que lo permita sería la primera, por que?
Imagina que el número a comparar se algo grande como 1 305 667, suponiendo el uso de red, procesador o cualquier contexto en que se realice dicha operación, cuando se utiliza el módulo(%), aunque no se nota, lo que hace el programa es rápidamente dividir por el segundo número, y por otro lado ten en cuenta que el sistema binario es natural de los pc's, por lo tanto le queda más sencillo convertir cualquier número a binario y luego compararlo con 1, ya que este en todos los sistemas numéricos se auto representa.
Exactamente, el sistema binario es natural del procesador, y tienes razón, en algunos lenguajes va a ser más rápido uno que el otro. Técnicamente, el residuo de una división se obtiene en el procesador Intel x86 con la instrucción DIV de assembler, donde el cociente está en AX y el residuo en DX, aproximadamente 4 ciclos de cpu. Mientras que la instrucción AND usará 1 ciclo de cpu. Actualmente los procesadores pueden realizar millones de ciclos de cpu por segundo, así que la velocidad pierde importancia sino es un compresor de audio o algo así, donde esta operación se realizará millones de veces.
Pero lo más importante ... ¿Cual es mas claro para una aplicación de este tipo?
Cita:
Iniciado por Raziel_Ravenheart lo cual devuelve 4, (que genio, no?)
No es una genialidad, el hecho es que te hizo falta explicarlo, simplemente.
Cita:
Iniciado por Raziel_Ravenheart ... entonces si es así, para que se evalué alguna de las condiciones por que no utilizar el ||(OR) ya que no dudo que el hacerlo el código se entiende más, aunque abogando porlo que comenté anteriormente, al utilizar el & se realiza más rápido la comparación. ...
Me imagino que se refiere a la evaluación 'short circuit'.
http://en.wikipedia.org/wiki/Short-circuit_evaluation
Saludos,