¿Cómo determinaría si un número dado es par o impar? Llevo mucho tiempo queriendo resolver esto y no he llegado a ningún lado.
128
Puede usar el operador de módulo, pero eso puede ser lento. Si es un número entero, puede hacer:
if ( (x & 1) == 0 ) { even... } else { odd... }
Esto se debe a que el bit bajo siempre se establecerá en un número impar.
n % 2 == 0significa semánticamenteDivide by 2 and check if the remainder is 0, lo que es mucho más claro de lon & 1 == 0que significaZero all the bits but leave the least significant bit unchanged and check if the result is 0. La claridad mejorada de la primera vale la sobrecarga (probablemente no existente). Eso es lo que quise decir con optimización prematura. Si algo es lento y que el perfil it en esa parte cambiandon % 2an & 1es, sin duda justificada, pero hacerlo de antemano que no es. En general, trabajar con los operadores de bits es una mala idea antes de crear un perfil.n % 2 == 0está más limpia quen & 1 == 0.fuente
Si el resto cuando divide por 2 es 0, es par.
%es el operador para obtener el resto.fuente
(A % B)en sí mismo puede usarse como una expresión, y ahí es cuando las cosas se ponen divertidas.El operador restante,%, le dará el resto después de dividirlo por un número.
Entonces
n % 2 == 0será verdadero si n es par y falso si n es impar.fuente
Cada número par es divisible por dos, independientemente de si es un decimal (pero el decimal, si está presente, también debe ser par). Entonces puede usar el
%operador (módulo), que divide el número de la izquierda por el número de la derecha y devuelve el resto ...fuente
yo recomendaria
Hay una breve explicación de cómo verificar si el número es impar. El primer intento es algo similar a lo que intentó @AseemYadav:
pero como se mencionó en el libro:
así que generalmente cuando tenemos un número impar negativo, en lugar de
1obtenerlo-1como resultado dei%2. Entonces podemos usar la solución @Camilo o simplemente hacer:pero generalmente la solución más rápida es usar el operador AND como @lucasmo escribe arriba:
@Editar También vale la pena señalar
Math.floorMod(int x, int y);cuál es bueno con el dividendo negativo, pero también puede regresar-1si el divisor es negativofuente
Funciona para números positivos o negativos.
fuente
El bit menos significativo (más a la derecha) se puede utilizar para verificar si el número es par o impar. Para todos los números impares, el bit más a la derecha es siempre 1 en representación binaria.
fuente
El siguiente programa puede manejar grandes números (número de dígitos mayor que 20)
Aquí está la salida ::
fuente
Puede usar el operador de módulo, pero eso puede ser lento. Una forma más eficiente sería verificar el bit más bajo porque eso determina si un número es par o impar. El código se vería así:
fuente
Puedes hacer así:
Esto se debe a que Java tiene en su módulo de operación el signo del dividendo, el lado izquierdo: n. Entonces, para dividendos negativos y positivos, el módulo tiene el signo de ellos.
Por supuesto, la operación bit a bit es más rápida y optimizada, simplemente documente la línea de código con dos o tres palabras cortas, lo que lo hace para facilitar la lectura.
fuente
Otra forma fácil de hacerlo sin usar la condición if / else (funciona tanto para números positivos como negativos):
Para un número impar, la expresión devolverá '1' como resto, dando
de lo contrario, 'even' se imprime cuando la expresión aparece con el resultado '0'
fuente
int n = -3;. Como @Camilo menciona a continuación: cuando la operación restante devuelve un resultado distinto de cero, tiene el mismo signo que su operando izquierdo, tan generosamente tenemosSystem.out.println(messages.get(-1));lo que nos dajava.lang.ArrayIndexOutOfBoundsExceptionSi el módulo del número dado es igual a cero, el número es incluso un número impar. A continuación se muestra el método que hace eso:
fuente
fuente
Aquí hay un ejemplo para determinar si un número dado es par o impar,
Bueno, hay muchas formas de determinar lo mismo. Consulte este recurso para obtener más ejemplos para encontrar que el número dado es par o impar.
fuente
Aquí hay un ejemplo completo: -
fuente