GodzilLe 07/02/2017 à 13:30
Tiens en plus d’être expert en sciences politique tu es expert en sciences informatique. Bien!
Le débat est de toutes manière complètement foireux parce que signe ou pas, on ne fait que déporter le problème.
Entier 8 bit (c'est plus simple) :
Signe: -128 a +127
Non signé: +0 a +255
Certain râlent parce que dans le monde non signé "0 - 1" donne 255 et pas un nombre negatif,
Mais si on fait -128 - 1 dans le monde signé il se passe quoi a votre avis?
Oui on va obtenir +127
Hummm
Bref c'est complètement idiot comme débat. On traite des nombre qui ne peuvent/doivent jamais être négatif pourquoi se limiter et utiliser un type qui gère des nombres négatif?
Sinon tant qu'a faire, autant n'utiliser que des nombres flottant tiens parce que bon dans le monde des nombres entiers, 5/2 = 2 et c'est mathématiquement faux. pourtant on utilise pas systématiquement des flottant.
J'entends "oui mais comment on fait pour savoir que la soustraction qu'on a fait la elle fait un caca parce que passé en dessous de zero" ?
Creuse toi un peu les méninge je te répondrais, la solution est extrêmement simple:
pour l'operation a = a - b:
if (b > a)
{
a = a - b;
}
else
{
raiseWarning("a - b goes negative, caping at 0");
a = 0;
}
Mais dans ce cas, que les nombres soient signé ou non il faut aussi faire des vérifications qu'on ne wrappe pas (les operation type -128 - 1, +127 + 1, etc..)