Realmente no entiendo cómo funciona la división de módulos. Estaba calculando 27 % 16
y terminé con 11
y no entiendo por qué.
Parece que no puedo encontrar una explicación en términos sencillos en línea. ¿Alguien puede explicar a un nivel muy alto lo que está pasando aquí?
La mayoría de las explicaciones pierden un paso importante, llenemos el vacío con otro ejemplo.
Dado lo siguiente:
La función de módulo se ve así:
Determinamos por qué es así.
Primero, realice la división de enteros , que es similar a la división normal, excepto que se descarta cualquier número fraccionario (también conocido como resto):
Luego, multiplica el resultado de la división anterior (
2
) con nuestro divisor (6
):Finalmente, reste el resultado de la multiplicación anterior (
12
) de nuestro dividendo (16
):El resultado de esta resta,
4
el resto , es el mismo resultado de nuestro módulo anterior.fuente
16 // 6 >>> 2
y16 / 6 >>> 2.6666666666666665
Quizás el ejemplo con un reloj podría ayudarlo a comprender el módulo.
Un uso familiar de la aritmética modular es su uso en el reloj de 12 horas, en el que el día se divide en dos períodos de 12 horas.
Digamos que actualmente tenemos esta hora: 15:00
Pero también se podría decir que son las 3 pm
Esto es exactamente lo que hace el módulo:
Encuentra este ejemplo mejor explicado en wikipedia: Artículo de módulo de Wikipedia
fuente
La fórmula simple para calcular el módulo es: -
Entonces, 27% 16: -
27- {(27/16) * 16}
27- {1 * 16}
Respuesta = 11
Nota :
Todos los cálculos se realizan con números enteros. En el caso de un cociente decimal, la parte posterior al decimal debe ignorarse / truncarse.
Por ejemplo: 27/16 = 1,6875 debe tomarse como 1 en la fórmula mencionada anteriormente. 0,6875 se ignora.
Los compiladores de lenguajes informáticos tratan un número entero con parte decimal de la misma manera (truncando después del decimal) también
fuente
El operador de módulo toma una declaración de división y devuelve lo que queda de ese cálculo, los datos "restantes", por así decirlo, como 13/5 = 2. Lo que significa que quedan 3, o que quedan de ese cálculo. ¿Por qué? porque 2 * 5 = 10. Por lo tanto, 13 - 10 = 3.
El operador de módulo hace todo ese cálculo por usted, 13% 5 = 3.
fuente
La división de módulo es simplemente esto: divide dos números y devuelve solo el resto
27/16 = 1 con 11 sobrantes, por lo tanto 27% 16 = 11
ídem 43/16 = 2 con 11 sobrantes así que 43% 16 = 11 también
fuente
Muy simple:
a % b
se define como el resto de la división dea
porb
.Consulte el artículo de wikipedia para obtener más ejemplos.
fuente
Me gustaría agregar una cosa más:
es fácil calcular el módulo cuando el dividendo es mayor / mayor que el divisor
dividendo = 5 divisor = 3
pero ¿y si el divisor es menor que el dividendo?
dividendo = 3 divisor = 5
Esto se debe a que, dado que 5 no puede dividir a 3 directamente, módulo será el dividendo
fuente
Espero que estos sencillos pasos te ayuden:
20 / 3 = 6
; no incluya el.6667
- simplemente ignórelo3 * 6 = 18
20 - 18 = 2
, que es el resto del módulofuente
Más fácil cuando su número después del decimal (0.xxx) es corto. Luego, todo lo que necesitas hacer es multiplicar ese número por el número después de la división.
Ex:
32 % 12 = 8
Lo haces.
32/12=2.666666667
Entonces tiras lo que quieras2
y te concentras en el0.666666667
0.666666667*12=8
<- Esa es tu respuesta.(nuevamente, solo es fácil cuando el número después del decimal es corto)
fuente
La división de módulo le da el resto de una división, en lugar del cociente.
fuente
Digamos que tienes 17 mod 6.
qué total de 6 te acercará más a 17, será 12 porque si pasas de 12 tendrás 18 que es más que la pregunta de 17 mod 6. Luego tomarás 12 y menos de 17, lo que te dará su respuesta, en este caso 5.
17 mod 6 = 5
fuente
La división de módulos es bastante simple. Utiliza el resto en lugar del cociente.
13/12 = 1R1, ergo 13% 12 = 1.
Ayuda pensar en el módulo como un "ciclo".
En otras palabras, para la expresión
n % 12
, el resultado siempre será <12.Eso significa que la secuencia para el conjunto
0..100
den % 12
es:En ese sentido, el módulo, así como sus usos, se vuelve mucho más claro.
fuente
Lo único importante que hay que entender es que el módulo (indicado aquí por% como en C) se define mediante la división euclidiana .
Para dos
(d, q)
enteros cualesquiera, lo siguiente siempre es cierto :Como puede ver, el valor de
d%q
depende del valor ded/q
. Generalmente para enteros positivosd/q
se trunca hacia cero , por ejemplo, 5/2 da 2, por lo tanto:Sin embargo, para los números enteros negativos, la situación es menos clara y depende del idioma y / o el estándar. Por ejemplo, -5/2 puede devolver -2 (truncado hacia cero como antes) pero también puede devolver -3 (con otro idioma).
En el primer caso:
pero en el segundo:
Como se dijo antes, solo recuerde el invariante , que es la división euclidiana .
Más detalles:
fuente
Puedes interpretarlo de esta manera:
16 va 1 vez en 27 antes de pasarlo.
Entonces, se podría decir que 16 va una vez en 27 con un resto de 11.
De hecho,
Otro ejemplo:
Bueno, 3 va 6 veces en 20 antes de pasarlo.
Para sumar 20 necesitamos 2, por lo que el resto de la expresión del módulo es 2.
fuente
Es simple, el operador de módulo (%) devuelve el resto después de la división entera. Tomemos el ejemplo de tu pregunta. ¿Cómo 27% 16 = 11? Cuando simplemente divide 27 entre 16, es decir (27/16), obtiene el resto como 11, y es por eso que su respuesta es 11.
fuente
Escribe una tabla que comience con 0.
Continúe la tabla en filas.
Todo en la columna uno es un múltiplo de 5. Todo en la columna 2 es un múltiplo de 5 con 1 como resto. Ahora la parte abstracta: puedes escribir eso (1) como 1/5 o como una expansión decimal. El operador de módulo devuelve solo la columna, o en otra forma de pensar, devuelve el resto en una división larga. Se trata de módulo (5). Módulo diferente, mesa diferente. Piense en una tabla hash.
fuente
Cuando dividimos dos números enteros tendremos una ecuación que se parece a la siguiente:
A / B = Q resto R
A es el dividendo; B es el divisor; Q es el cociente y R es el resto
A veces, solo nos interesa saber cuál es el resto cuando dividimos A por B. Para estos casos existe un operador llamado operador módulo (abreviado como mod).
Ejemplos
Consulte el artículo de Khan Academy para obtener más información.
En Ciencias de la Computación, la tabla Hash usa el operador Mod para almacenar el elemento donde A serán los valores después del hash, B será el tamaño de la tabla y R es el número de ranuras o clave donde se inserta el elemento.
Consulte Cómo funciona una tabla hash para obtener más información.
fuente
Este fue el mejor enfoque para mí para comprender el operador de módulo. Solo te lo explicaré a través de ejemplos.
Cuando divides estos dos números, el resultado es el resto. Así es como lo hago.
Entonces, lo que queda a 16 es 1
Aquí hay un ejemplo más:
16 % 7 = 7 + 7 = 14
¿qué le queda a 16? Es2
16 % 7 = 2
Uno más:
24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. Entonces el resto es cero,24 % 6 = 0
fuente