language agnostic - the - ¿Cómo funciona Divulus Divulus?
the modulus operator (17)
Cuando dividimos dos 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 entre B. Para estos casos, hay un operador llamado operador de módulo (abreviado como mod).
Ejemplos
16/5= 3 Remainder 1 i.e 16 Mod 5 is 1.
0/5= 0 Remainder 0 i.e 0 Mod 5 is 0.
-14/5= 3 Remainder 1 i.e. -14 Mod 5 is 1.
Vea el artículo de Khan Academy para más información.
En Informática, 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 la clave donde se inserta el elemento.
Consulte Cómo funciona una tabla hash para obtener más información
Realmente no entiendo cómo funciona la división de módulo. Estaba calculando 27 % 16
y terminé con 11
y no entiendo por qué.
Parece que no puedo encontrar una explicación en términos simples en línea. ¿Puede alguien elaborar a un nivel muy alto sobre lo que está sucediendo aquí?
Digamos que tienes 17 mod 6.
que total de 6 te acercará más a 17, será 12 porque si superas 12 tendrás 18, que es más que la cuestión de 17 mod 6. Luego tomarás 12 y menos de 17, lo que te dará tu respuesta, en este caso 5.
17 mod 6 = 5
El operador de módulo toma una declaración de división y devuelve lo que sobra de ese cálculo, los datos "restantes", por así decirlo, como 13/5 = 2. Lo que significa que quedan 3 o 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.
El resultado de una división de módulo es el resto de una división entera de los números dados.
Eso significa:
27 / 16 = 1, remainder 11
=> 27 mod 16 = 11
Otros ejemplos:
30 / 3 = 10, remainder 0
=> 30 mod 3 = 0
35 / 3 = 11, remainder 2
=> 35 mod 3 = 2
Es simple, el operador del módulo (%) devuelve el resto después de la división entera. Tomemos el ejemplo de su pregunta. ¿Cómo 27% 16 = 11? Cuando simplemente divide 27 por 16, es decir (27/16), obtiene el resto como 11, y es por eso que su respuesta es 11.
Escriba una tabla comenzando con 0.
{0,1,2,3,4}
Continúa la tabla en filas.
{0,1,2,3,4}
{5,6,7,8,9}
{10,11,12,13,14}
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: puede escribir que (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 la división larga. Estás tratando en módulo (5). Diferente módulo, tabla diferente. Piensa en una Tabla hash.
Espero que estos pasos simples ayuden:
20 % 3 = 2
-
20 / 3 = 6
; no incluya el.6667
- simplemente.6667
-
3 * 6 = 18
-
20 - 18 = 2
, que es el resto del módulo
Este fue el mejor enfoque para mí para entender el operador de módulo. Solo te explicaré a través de ejemplos.
16 % 3
Cuando divide estos dos números, el resto es el resultado. Esta es la forma en que lo hago.
16 % 3 = 3 + 3 = 6; 6 + 3 = 9; 9 + 3 = 12; 12 + 3 = 15
Entonces, lo que queda en 16 es 1
16 % 3 = 1
Aquí hay un ejemplo más: 16 % 7 = 7 + 7 = 14
¿qué queda para 16? Es 2
16 % 7 = 2
Uno más: 24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. Entonces el resto es cero, 24 % 6 = 0
La división de módulo te da el resto de una división, en lugar del cociente.
La división del módulo es bastante simple. Utiliza el resto en lugar del cociente.
1.0833... <-- Quotient
__
12|13
12
1 <-- Remainder
1.00 <-- Remainder can be used to find decimal values
.96
.040
.036
.0040 <-- remainder of 4 starts repeating here, so the quotient is 1.083333...
13/12 = 1R1, ergo 13% 12 = 1.
Ayuda a 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
para n % 12
es:
{0,1,2,3,4,5,6,7,8,9,10,11,0,1,2,3,4,5,6,7,8,9,10,11,0,[...],4}
En esa luz, el módulo, así como sus usos, se vuelve mucho más claro.
La división del módulo es simplemente esto: divida dos números y devuelva el resto solamente
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
La fórmula simple para calcular el módulo es:
[Dividend-{(Dividend/Divisor)*Divisor}]
Entonces, 27% 16: -
27- {(27/16) * 16}
27- {1 * 16}
Respuesta = 11
Nota :
Todos los cálculos son con números enteros. En el caso de un cociente decimal, la parte posterior al decimal debe ser ignorada / truncada.
por ejemplo: 27/16 = 1.6875 debe tomarse como solo 1 en la fórmula mencionada anteriormente. 0.6875 es ignorado.
Los compiladores de lenguajes de computadora tratan un entero con la parte decimal de la misma manera (truncando después del decimal) también
La mayoría de las explicaciones omiten un paso importante, llenemos el vacío con otro ejemplo.
Dado lo siguiente:
Dividend: 16
Divisor: 6
La función del módulo se ve así:
16 % 6 = 4
Vamos a determinar por qué es esto.
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 residuo):
16 / 6 = 2
Luego, multiplica el resultado de la división anterior ( 2
) con nuestro divisor ( 6
):
2 * 6 = 12
Finalmente, reste el resultado de la multiplicación anterior ( 12
) de nuestro dividendo ( 16
):
16 - 12 = 4
El resultado de esta resta, 4
, el resto , ¡es el mismo resultado de nuestro módulo anterior!
Más fácil cuando su número después del decimal (0.xxx) es corto. Entonces todo lo que necesita hacer es multiplicar ese número con el número después de la división.
Ej: 32 % 12 = 8
32/12=2.666666667
Luego tiras el 2
y te enfocas en 0.666666667
0.666666667*12=8
<- Esa es tu respuesta.
(De nuevo, solo es fácil cuando el número después del decimal es corto)
Me gustaría agregar una cosa más:
es fácil calcular el módulo cuando el dividendo es mayor o mayor que el divisor
dividendo = 5 divisor = 3
5% 3 = 2
3)5(1
3
-----
2
pero qué pasa si el divisor es más pequeño que el dividendo
dividendo = 3 divisor = 5
3% 5 = 3? cómo
Esto se debe a que, dado que 5 no puede dividir 3 directamente, el módulo será el dividendo
Muy simple: a % b
se define como el resto de la división de a
por b
.
Vea el artículo de wikipedia para más ejemplos.
Quizás el ejemplo con un reloj podría ayudarte a entender 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 tenemos actualmente esta vez: 15:00
Pero también podrías decir que son las 3 p. M.
Esto es exactamente lo que Modulo hace:
15 / 12 = 1, remainder 3
Este ejemplo se explica mejor en wikipedia: Wikipedia Artículo Modulo