¿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 == 0
significa semánticamenteDivide by 2 and check if the remainder is 0
, lo que es mucho más claro de lon & 1 == 0
que 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 % 2
an & 1
es, 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 == 0
está 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 == 0
será 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
1
obtenerlo-1
como 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-1
si 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.ArrayIndexOutOfBoundsException
Si 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