una resto numero entera ejemplo división java modulo

resto - mod en java netbeans



¿Cuál es la sintaxis de mod en java? (15)

Como ejemplo en pseudocódigo:

if ((a mod 2) == 0) { isEven = true; } else { isEven = false; }


Además, mod se puede utilizar de esta manera:

int a = 7; b = a % 2;

b sería igual a 1. Porque 7 % 2 = 1 .


Aquí está la representación de su pseudocódigo en un código de Java mínimo;

boolean isEven = a % 2 == 0;

Ahora lo desglosaré en sus componentes. El operador de módulo en Java es el carácter de porcentaje (%). Por lo tanto, tomar un int% int devuelve otro int. El operador de doble igual (==) se usa para comparar valores, como un par de entradas y devuelve un valor booleano. Esto se asigna a la variable booleana ''isEven''. Según la precedencia del operador, el módulo se evaluará antes de la comparación.


Como todos los demás ya dieron la respuesta, agregaré un poco de contexto adicional. % El operador de "módulo" está realizando la operación de resto. La diferencia entre mod y rem es sutil, pero importante.

(-1 mod 2) normalmente daría 1. Más específicamente dados dos enteros, X e Y, la operación (X mod Y) tiende a devolver un valor en el rango [0, Y). Dicho de otra manera, el módulo de X e Y es siempre mayor o igual a cero, y menor que Y.

Realizar la misma operación con el operador "%" o rem mantiene el signo del valor X. Si X es negativo, se obtiene un resultado en el rango (-Y, 0]. Si X es positivo, se obtiene un resultado en el rango [0, Y).

A menudo, esta distinción sutil no importa. Sin embargo, volviendo a la pregunta del código, hay varias formas de resolver la "uniformidad".

El primer enfoque es bueno para los principiantes, porque es especialmente detallado.

// Option 1: Clearest way for beginners boolean isEven; if ((a % 2) == 0) { isEven = true } else { isEven = false }

El segundo enfoque aprovecha mejor el lenguaje y conduce a un código más breve. (No olvide que el operador == devuelve un valor booleano).

// Option 2: Clear, succinct, code boolean isEven = ((a % 2) == 0);

El tercer enfoque está aquí para completar, y utiliza el operador ternary . Aunque el operador ternario suele ser muy útil, en este caso considero que el segundo enfoque es superior.

// Option 3: Ternary operator boolean isEven = ((a % 2) == 0) ? true : false;

El cuarto y último enfoque es utilizar el conocimiento de la representación binaria de enteros . Si el bit menos significativo es 0, entonces el número es par. Esto se puede verificar usando bitwise y el operador (&). Si bien este enfoque es el más rápido (estás haciendo un simple enmascaramiento de bits en lugar de división), quizás sea un poco avanzado / complicado para un principiante.

// Option 4: Bitwise-and boolean isEven = ((a & 1) == 0);

Aquí utilicé bitwise y el operador, y lo representé en la forma sucinta que se muestra en la opción 2. Reescribiéndolo en la forma de la Opción 1 (y, alternativamente, la Opción 3) se deja como ejercicio para el lector. ;)

Espero que ayude.


El código se ejecuta mucho más rápido sin usar módulo:

public boolean isEven(int a){ return ( (a & 1) == 0 ); } public boolean isOdd(int a){ return ( (a & 1) == 1 ); }


El operador de módulo es% (signo de porcentaje). Para probar la uniformidad o generalmente hacer un módulo para una potencia de 2, también puede usar & (el operador y) como isEven =! (A & 1).


El operador restante en Java es % y el operador de módulo se puede expresar como

public int mod(int i, int j) { int rem = i % j; if (j < 0 && rem > 0) { return rem + j; } if (j > 0 && rem < 0) { return rem + j; } return rem; }



Java en realidad no tiene operador de módulo como lo hace C % en Java es un operador de resto. En enteros positivos, funciona exactamente como módulo, pero funciona de manera diferente en enteros negativos y, a diferencia de módulo, puede trabajar con números de punto flotante también. Aún así, es raro usar% en cualquier cosa que no sean enteros positivos, así que si quieres llamarlo módulo, ¡siéntete libre!


Otra forma es:

boolean isEven = false; if((a % 2) == 0) { isEven = true; }

Pero aún así la forma más fácil es:

boolean isEven = (a % 2) == 0;

Como dijo @Steve Kuo.


Para enteros no negativos, puede utilizar el operador de resto % . Para su ejemplo exacto:

if ((a % 2) == 0) { isEven = true; } else { isEven = false; }

Esto se puede simplificar a una sola línea:

isEven = (a % 2) == 0;


Para hacer que la operación% (REM) de Java funcione como MOD para valores negativos de X y positivos de Y, puede usar este método:

private int mod(int x, int y) { int result = x % y; if (result < 0) { result += y; } return result; }

o con el operador ternario (más corto, pero no posible o menos eficiente en algunas situaciones):

private int mod(int x, int y) { int result = x % y; return result < 0? result + y : result; }


Si bien es posible realizar un módulo adecuado verificando si el valor es negativo y corregirlo si lo es (como muchos han sugerido), existe una solución más compacta.

(a % b + b) % b

Primero hará el módulo, limitando el valor al rango -b -> + b y luego agregará b para asegurar que el valor sea positivo, dejando que el siguiente módulo lo limite al rango 0 -> b.

Nota: Si b es negativo, el resultado también será negativo.


Una alternativa al código de @Cody:

Usando el operador de módulo:

bool isEven = (a % 2) == 0;

Creo que este es un código ligeramente mejor que escribir si / else, porque hay menos duplicación y flexibilidad no utilizada. Requiere un poco más de capacidad cerebral para examinar, pero la buena denominación de isEven compensa.



if (a % 2 == 0) { } else { }