Je ne comprends pas vraiment comment fonctionne la division par module. Je calculais 27 % 16
et je me suis retrouvé avec 11
et je ne comprends pas pourquoi.
Je n'arrive pas à trouver une explication en termes simples en ligne. Quelqu'un peut-il expliquer à un très haut niveau ce qui se passe ici?
La plupart des explications manquent une étape importante, remplissons le vide en utilisant un autre exemple.
Compte tenu de ce qui suit:
La fonction module ressemble à ceci:
Déterminons pourquoi c'est.
Tout d'abord, effectuez une division entière , qui est similaire à la division normale, sauf que tout nombre fractionnaire (aka reste) est ignoré:
Ensuite, multipliez le résultat de la division ci-dessus (
2
) par notre diviseur (6
):Enfin, soustrayez le résultat de la multiplication ci-dessus (
12
) de notre dividende (16
):Le résultat de cette soustraction,
4
le reste , est le même résultat de notre module ci-dessus!la source
16 // 6 >>> 2
et16 / 6 >>> 2.6666666666666665
Peut-être que l'exemple avec une horloge pourrait vous aider à comprendre le modulo.
Une utilisation familière de l'arithmétique modulaire est son utilisation dans l'horloge de 12 heures, dans laquelle la journée est divisée en deux périodes de 12 heures.
Disons que nous avons actuellement cette heure: 15h00
Mais vous pouvez aussi dire qu'il est 15h00
C'est exactement ce que fait modulo:
Vous trouverez cet exemple mieux expliqué sur wikipedia: Article Wikipedia Modulo
la source
La formule simple pour calculer le module est: -
Donc, 27% 16: -
27- {(27/16) * 16}
27- {1 * 16}
Réponse = 11
Remarque :
Tous les calculs sont avec des entiers. Dans le cas d'un quotient décimal, la partie après la décimale doit être ignorée / tronquée.
par exemple: 27/16 = 1,6875 doit être pris comme juste 1 dans la formule mentionnée ci-dessus. 0.6875 est ignoré.
Les compilateurs de langages informatiques traitent également un entier avec une partie décimale (en tronquant après la décimale)
la source
L'opérateur de module prend une déclaration de division et renvoie tout ce qui reste de ce calcul, les données "restantes", pour ainsi dire, telles que 13/5 = 2. Ce qui signifie qu'il en reste 3 ou qu'il reste de ce calcul. Pourquoi? parce que 2 * 5 = 10. Ainsi, 13 - 10 = 3.
L'opérateur de module fait tout ce calcul pour vous, 13% 5 = 3.
la source
la division du module est simplement la suivante: divisez deux nombres et renvoyez le reste seulement
27/16 = 1 avec 11 restants, donc 27% 16 = 11
idem 43/16 = 2 avec 11 restants donc 43% 16 = 11 aussi
la source
Très simple:
a % b
est défini comme le reste de la division dea
parb
.Voir l' article wikipedia pour plus d'exemples.
la source
Je voudrais ajouter encore une chose:
il est facile de calculer modulo lorsque le dividende est supérieur / supérieur au diviseur
dividende = 5 diviseur = 3
mais que faire si le diviseur est plus petit que le dividende
dividende = 3 diviseur = 5
En effet, puisque 5 ne peut pas diviser 3 directement, modulo sera ce qu'est le dividende
la source
J'espère que ces étapes simples vous aideront:
20 / 3 = 6
; ne pas inclure le.6667
- ignorez-le simplement3 * 6 = 18
20 - 18 = 2
, qui est le reste du modulola source
Plus facile lorsque votre nombre après la virgule (0.xxx) est court. Ensuite, tout ce que vous avez à faire est de multiplier ce nombre par le nombre après la division.
Ex:
32 % 12 = 8
Vous faites
32/12=2.666666667
ensuite vous jetez le2
loin, et vous vous concentrez sur le0.666666667
0.666666667*12=8
<- C'est votre réponse.(encore une fois, seulement facile lorsque le nombre après la virgule est court)
la source
La division du module vous donne le reste d'une division, plutôt que le quotient.
la source
Disons que vous avez 17 mod 6.
quel total de 6 vous rapproche le plus de 17, ce sera 12 car si vous dépassez 12 vous aurez 18 ce qui est plus que la question de 17 mod 6. Vous prendrez alors 12 et moins de 17 ce qui vous donnera votre réponse, dans ce cas 5.
17 mod 6 = 5
la source
La division du module est assez simple. Il utilise le reste au lieu du quotient.
13/12 = 1R1, ergo 13% 12 = 1.
Il est utile de considérer le module comme un «cycle».
En d'autres termes, pour l'expression
n % 12
, le résultat sera toujours <12.Cela signifie que la séquence de l'ensemble
0..100
pourn % 12
est:Dans cette optique, le module, ainsi que ses utilisations, devient beaucoup plus clair.
la source
La seule chose importante à comprendre est que le module (désigné ici par% comme en C) est défini par la division euclidienne .
Pour deux
(d, q)
nombres entiers, ce qui suit est toujours vrai :Comme vous pouvez le voir, la valeur de
d%q
dépend de la valeur ded/q
. Généralement, pour les entiers positifsd/q
est tronqué vers zéro , par exemple 5/2 donne 2, d'où:Cependant, pour les entiers négatifs, la situation est moins claire et dépend de la langue et / ou de la norme. Par exemple, -5/2 peut renvoyer -2 (tronqué vers zéro comme auparavant) mais peut également renvoyer -3 (avec une autre langue).
Dans le premier cas:
mais dans le second:
Comme dit précédemment, souvenez-vous simplement de l' invariant , qui est la division euclidienne .
Plus de détails:
la source
Vous pouvez l'interpréter de cette façon:
16 va 1 fois sur 27 avant de passer.
On pourrait donc dire que 16 va une fois sur 27 avec un reste de 11.
En réalité,
Un autre exemple:
Eh bien 3 va 6 fois en 20 avant de le passer.
Pour additionner à 20, nous avons besoin de 2 donc le reste de l'expression du module est 2.
la source
C'est simple, l'opérateur de module (%) renvoie le reste après la division entière. Prenons l'exemple de votre question. Comment 27% 16 = 11? Lorsque vous divisez simplement 27 par 16, c'est-à-dire (27/16), le reste est égal à 11, et c'est pourquoi votre réponse est 11.
la source
Écrivez un tableau commençant par 0.
Continuez le tableau en lignes.
Tout dans la colonne 1 est un multiple de 5. Tout dans la colonne 2 est un multiple de 5 avec 1 comme reste. Maintenant la partie abstraite: vous pouvez écrire cela (1) comme 1/5 ou comme un développement décimal. L'opérateur module ne renvoie que la colonne, ou dans une autre façon de penser, il renvoie le reste sur une division longue. Vous avez affaire à modulo (5). Module différent, table différente. Pensez à une table de hachage.
la source
Lorsque nous divisons deux entiers, nous aurons une équation qui ressemble à ce qui suit:
A / B = Q reste R
A est le dividende; B est le diviseur; Q est le quotient et R est le reste
Parfois, nous nous intéressons uniquement à ce qu'est le reste lorsque nous divisons A par B. Pour ces cas, il existe un opérateur appelé opérateur modulo (abrégé en mod).
Exemples
Voir l' article de Khan Academy pour plus d'informations.
En informatique, la table de hachage utilise l'opérateur Mod pour stocker l'élément où A sera les valeurs après le hachage, B sera la taille de la table et R est le nombre d'emplacements ou de clé où l'élément est inséré.
Voir Comment fonctionne une table de hachage pour plus d'informations
la source
C'était la meilleure approche pour moi pour comprendre l'opérateur de module. Je vais simplement vous expliquer à travers des exemples.
Lorsque vous divisez ces deux nombres, le reste est le résultat. C'est comme ça que je fais.
Donc, ce qui reste à 16 est 1
Voici un autre exemple:
16 % 7 = 7 + 7 = 14
que reste-t-il à 16? Est2
16 % 7 = 2
Un plus:
24 % 6 = 6 + 6 = 12; 12 + 6 = 18; 18 + 6 = 24
. Donc le reste est zéro,24 % 6 = 0
la source