66 votes

Reconnaître quand utiliser l'opérateur de module

Je sais que le module (%) de l'opérateur calcule le reste d'une division. Comment puis-je identifier une situation où j'aurais besoin d'utiliser le module opérateur?

Je sais que je peux utiliser le module opérateur pour voir si un nombre est pair ou impair et premier ou composite, mais c'est tout. Je n'ai pas souvent de penser en termes de résidus. Je suis sûr que le module opérateur est utile, et j'aimerais apprendre à en tirer parti.

Je viens d'avoir des problèmes d'identification où l'opérateur de modulo est applicable. Dans diverses situations de programmation, il est difficile pour moi de voir le problème et de réaliser "Hey! Le reste de la division de travailler ici!".

27voto

Paul R Points 104036

Imaginez que vous ayez un temps écoulé en secondes et que vous souhaitiez le convertir en heures, minutes et secondes:

 h = s / 3600;
m = (s / 60) % 60;
s = s % 60;
 

21voto

SysAdmin Points 2257
 0 % 3 = 0;
1 % 3 = 1;
2 % 3 = 2;
3 % 3 = 0;
 

Avez-vous vu ce qu'il a fait? À la dernière étape, il est revenu à zéro. Cela pourrait être utilisé dans des situations telles que:

  1. Pour vérifier si N est divisible par M (par exemple, pair ou impair) ou N est un multiple de M.

  2. Pour mettre un cap d'une valeur particulière. Dans ce cas 3.

  3. Pour obtenir les derniers M chiffres d’un nombre -> N% (10 ^ M).

17voto

SeaDrive Points 1289

Je l'utilise pour les barres de progression et autres qui indiquent la progression dans une grande boucle. La progression n'est signalée que toutes les n fois dans la boucle ou lorsque% n == 0.

12voto

Bob Points 4773

Je l'ai utilisé pour restreindre un nombre à un certain multiple:

 temp = x - (x % 10); //Restrict x to being a multiple of 10
 

11voto

jweyrich Points 10002
  • Valeurs d'emballage (comme une horloge).
  • Fournissez des champs finis aux algorithmes à clé symétrique.
  • Opérations au niveau des bits.

Etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X