modulo négatif? - C - Programmation
Marsh Posté le 25-05-2005 à 15:19:13
Euh.
Le modulo, c'est le reste d'une division. Alors, non, il ne peut pas être négatif, il est forcément supérieur ou égal à 0.
Marsh Posté le 25-05-2005 à 16:11:15
Elmoricq a écrit : Euh. |
dans la pratique, selon les implémentation, le cas du modulo négatif est à gérer.
D'après mes souvenirs, en C le modulo est négatif, mais cela reste à vérifier.
Il faut donc faire un test de signe puis ajuster.
Marsh Posté le 25-05-2005 à 21:50:17
mp3490 a écrit : Bonjour, |
-9 mod 8 = -1 !!!
Marsh Posté le 25-05-2005 à 22:14:27
erreur, le modulo, ce n'est pas le reste de la division.
(remainder 10 3) ;; 1 |
Marsh Posté le 25-05-2005 à 22:15:21
ReplyMarsh Posté le 25-05-2005 à 22:18:13
Taz a écrit : erreur, le modulo, ce n'est pas le reste de la division.
|
On m'aurait menti toute ma vie ?
Marsh Posté le 25-05-2005 à 22:19:06
Taz a écrit : sérieux ? ça m'étonne beaucoup ça |
Non. Post effacé après secouage de neurone.
Marsh Posté le 25-05-2005 à 22:22:28
Sve@r a écrit : -9 mod 8 = -1 !!! |
http://fr.wikipedia.org/wiki/Arith [...] _modulaire
bon alors, n'étant pas matheux, je ne me suis jamais posé la question, % en C (et autre langage reprenant les mêmes opérateurs), c'est le modulo (congruence) ou le reste de la division euclidienne ?
edit : OK, Emmanuel, donc c'est bien le vrai modulo.
Marsh Posté le 25-05-2005 à 22:23:56
Emmanuel Delahaye a écrit : Non. Post effacé après secouage de neurone. |
n'efface pas tes messages s'il te plait.
Marsh Posté le 25-05-2005 à 22:26:02
la division euclidienne, c'est une opérations où les opérandes sont des entiers naturels. la congruence est une relation entre entiers relatifs
edit : (limite antiflood)
donc la fonction remainder, si elle est appliquée a des entiers relatifs, retourne (remainder a b) -> (* (signe a) (remainder (abs a) (abs b)), il me semble.
Marsh Posté le 25-05-2005 à 22:33:31
Taz a écrit : n'efface pas tes messages s'il te plait. |
Euh, pourquoi ? Pas la peine de laisser trainer une anerie...
Marsh Posté le 25-05-2005 à 22:35:18
ben pour pouvoir suivre le fil de la discussion. si tu veux supprimer quelque chose, utilise la balise strike
Marsh Posté le 25-05-2005 à 22:38:09
Taz a écrit : ben pour pouvoir suivre le fil de la discussion. si tu veux supprimer quelque chose, utilise la balise |
OKI.
Marsh Posté le 26-05-2005 à 02:18:39
Taz a écrit : erreur, le modulo, ce n'est pas le reste de la division.
|
quoi ça ?
en C :
-10%3==-1
&&
10%-3==1
donc c'est bien le reste de la division entière
Marsh Posté le 26-05-2005 à 02:32:16
alias modulo exemple,
-2/3==-0,666666666666...
en C on tronque donc :
-2/3==0 reste -2
maintenant si on arrondissait :
-2/3==-1 reste 1
Marsh Posté le 26-05-2005 à 09:32:02
ooops, je testé bêtement en python pour aller vite. Donc en C, c'est bien la division entière, mais en python, c'est bien le modulo mathématique.
Emmanuel > c'est pas un peu bordélique ça ?
Marsh Posté le 26-05-2005 à 09:34:05
Taz a écrit : ooops, je testé bêtement en python pour aller vite. Donc en C, c'est bien la division entière, mais en python, c'est bien le modulo mathématique. |
Les joies des spécificités des langages
Marsh Posté le 26-05-2005 à 09:44:05
ce que je comprends pas trop, c'est la mathématiciens qui poussent pour avoir le type complexe, mais si y a déjà pas tous les opérateurs ...
Marsh Posté le 26-05-2005 à 09:46:21
Taz a écrit : ooops, je testé bêtement en python pour aller vite. Donc en C, c'est bien la division entière, mais en python, c'est bien le modulo mathématique. |
Seul compte ce qui est ecrit dans le document de définition du langage. Il faut parfois avaler quelques couleuvres...
Miam !
Marsh Posté le 30-05-2005 à 15:37:30
D'apres mes souvenirs de maths, le modulo est le reste de la division entiere de deux nombres (entiers), mais il n'a de sens que si les 2 opérandes sont positives.
Donc mathématiquement, -9 mod 8 n'as pas de sens.
(Information a verifier tout de meme )
Marsh Posté le 30-05-2005 à 16:28:19
chicotruss a écrit : D'apres mes souvenirs de maths, le modulo est le reste de la division entiere de deux nombres (entiers), mais il n'a de sens que si les 2 opérandes sont positives. |
si, on peut généraliser la division euclidienne dans Z. Dans ce cas, a mod b peut être négatif si a est négatif. par contre b se doit d'être un naturel non nul.
Marsh Posté le 25-05-2005 à 15:17:51
Bonjour,
je voudrais savoir si on pouvais avoir des modulo négatif en C.
du style n mod 8 =-1
Merci d'avance.
@+