15 Feb

La comparaison binaire !

Publié par Nain0nain ,

La comparaison binaire !

Salut tout le monde ! Après voir fait toutes les opérations binaires de bases mathématique, on s'attaque à la comparaison des nombres, ce qui est très important pour continuer dans le merveilleux monde de l'informatique et de l'algorithmie !

  • Comparaison de 2 bits
  • Plusieurs bits en même temps

1. Comparaison simple :

On va donc d'abord chercher à connaître les cas de bases, pour ensuite chercher à les câbler

Test d'égalité :

Quand on a une égalité avec deux bits, seulement deux possibilités s'offrent à nous ! Soit A et B : A = B si A et B = 0 ou A et B = 1 donc d'après la table de vérité :

Des souvenirs ?

Des souvenirs ?

Hé bien, si vous connaissez bien vos leçon c'est une NXOR (Une ou-exclusive négative). Donc pour tester une égalité il faut mettre une NXOR, si la sortie est 1 c'est que A = B !

Supériorité (et donc infériorité de l'autre variable) :

Pour la supériorité, qu'un seul état est possible : A > B si A = 1 et B = 0 :

Héhé ça ressemble beaucoup à une porte

Héhé ça ressemble beaucoup à une porte

Vous l'aurez sans doute remarqué, mais il s'agit tout simplement d'une AND avec une entré "bidouillée" (ici il suffit que B soit complémenté). Donc on va inverser la variable autre que celle que l'on veut tester : ici il suffit d'inverser la variable B (parce que on veut tester la supériorité de A) et si le montage vaut 1 alors A > B.

Pour tester si A < B, il suffit de faire le même montage mais en inversant A (parce qu’enfaîte on teste la supériorité de B : A < B = B > A) et si la montage vaut 1 alors B > A, par conséquence A < B.

Le tout en même temps :

Il suffit de reprendre deux montages de supériorité précédemment vu, un pour tester la supériorité de A et un pour celle de B (je me répète :D, l'infériorité de A). Et puis si les deux circuits sortent 0 en même temps c'est que forcément A = B donc au lieu de rajouter une NXOR aux entrées A et B (car il n'est pas possible que les deux circuits sortent 1 en même temps), il suffit de rajouter une NOR (si les deux valeurs sont 0 alors S = 1 et c'est tout). Je vous met tout ça en image :

La comparaison binaire !

C'est choli !

2. Assemblage :

Maintenant il faut créer une architecture qui permet de faire une comparaison de plusieurs bits et qui peut s’imbriquer pour faire des comparateurs toujours plus grands. On va donc faire comme avec les additions, on va faire en premier des comparateur de 4 bits, et on va rajouter des entrées pour poursuivre les retenues.

Le comparateur va tout simplement tester les combinaisons en fonction du poids des bits. Dans A = 1234 et B = 0454 on sait que 1234 > 0454 car le millier est plus important que la centaine. C'est pas parce que 454 > 234 que A < B, tout simplement les milliers ont un poids plus important que les centaines. Si vous avez A = 1234 et B = 1235, pour savoir le quel est le plus grand vous comparez les milliers, puis les centaines, puis les dizaines, puis les unités pour voir qu'ils sont différents et que A < B. Il suffit donc de comparer le chiffre qui à le plus de poids (milliers ici), si ils sont pas égaux la conclusion peut être prise, sinon ben il faut aller au chiffre de poids moindre et retester jusqu'à inégalité, ou qu'il n'y ai plus de chiffre à tester pour pouvoir prendre la conclusion.

C'est donc la même chose en binaire : A3A2A1A0 (par suite noté A3-0) et B3B2B1B0 (B3-0), A3 et B3 sont les poids les plus important et A0 et B0 les poids les plus faibles. La comparateur va donc tester A3 et B3, ensuite A2 et B2, et ainsi de suite, pour arriver à la conclusion. Sauf si l'inégalité est remarquée avant alors la conclusion peut être prise.

Maintenant imaginons que je veuille mettre deux circuitsen cascade, c'est tout simple il suffit de rajouter des entrées qui viennent du test précédent qui vont intervenir que quand les deux nombres de ce test sont égaux car je test les poids faibles en premier et ensuite les poids forts. C'est à dire que si j'ai A7-0 et B7-0, il me faut deux circuits de 4 bits, le premier de test A3-0 et B3-0 et je prends la conclusion. Ensuite j'envoie la conclusion prise (A3-0 < B3-0 ou A3-0 > B3-0 ou A3-0 = B3-0) puis avec le deuxième circuit je fait le test de A7-4 et B7-4 et si et seulement si A7-4 = B7-4 alors j'utilise la conclusion du test précédent A3-0 et B3-0 pour conclure le test général (A7-0 et B7-0), donc par conséquent la conclusion de A3-0 et B3-0 est celui général, donc de A7-0 et B7-0 car A7-4 = B7-4. Sinon seul le resultat de A7-4 et B7-4 compte car, le poids est plus important !

Je vous met donc le circuit et la table de vérité :

Voilà je détaille pas, mais un comparateur de 4 bits avec les entrées des comparaisons précédentes

Voilà je détaille pas, mais un comparateur de 4 bits avec les entrées des comparaisons précédentes

Regardez bien en détail

Regardez bien en détail

Hé oui il y a un blème ! Les deux dernières lignes sont "fausses". Enfaîte elles ne sont pas fausse car c'est la table de vérité de du CI 7485, et c'est donc ce qu'elle sort. Mais vous voyez que si on a A < B et A > B en même temps, ou aucun des deux c'est que A = B, mais la puce ne l'indique pas, il suffit donc de rajouter une NXOR sur la sortie des A < B et A > B et de mettre une OR sur la sortie NXOR et A = B et donc A < B et A > B n'a pas d'importance quand A = B :

Voilà j'ai rajouté en rouge

Voilà j'ai rajouté en rouge

Voilà vous avez votre comparateur tout près qui marche à merveille, et à quoi ça sert ? Ben à faire des maths parce que on s'en rend pas compte mais la comparaison est tout le temps utilisée !

Sur ce portez vous bien

Nain0nain

Nain0nain

Retour au menu : fonctionnement du processeur
Commenter cet article

medical video production orange county 25/02/2017 10:01

I love your blog, I recommend to all people who love this kind of post to visit this site, I recommend it.

Suivez nous sur :