01 Mar

La soustraction ?

Publié par Nain0nain ,

La soustraction ?

Rebonjour tout le monde ! Toujours partant pour de nouvelle explication ? c'est parti pour la soustraction !

  • Les nombres négatifs ?
  • Le semi-sousctracteur (half substracteur)
  • Et l'entier
  • P et G
  • Mise en cascade
  • Additionneur et Soustracteur.
  • Micro calculette

Ici vous pouvez reprendre la série depuis son début.

1. Les nombres négatifs ?

Bon c'est très bien la soustraction 2 - 1 = 1, mais il nous reste un problème : 2 - 3 = -1. Hé oui avec le binaire il y a que des naturels ! Mais comment il existe alors les calculatrices ? Ben par exemple les variables int sont signés en Java. Ces variables sont juste des nombres mémorisé par l'ordi, écrit en Binaire (enfin pas que des nombres mais voilà, c'est pour simplifier) : Il y a les variables qui définissent les binaires non signés, et ceux signés (et les décimaux). Vous l'aurez sans doute deviné les signés ont quelque chose en plus : en effet il permettent de savoir si il sont négatifs ou pas ! Nous avons donc les relatifs aussi en binaire

Donc ces signés, ça consiste en quoi ? En faite on va pas vraiment rajouter quelque chose mais plutôt utiliser un emplacement de l'octet : On va utiliser le 7ème chiffre pour connaitre le signe : 0 0000000 ou 1 0000000, 0 le chiffre et positif et inversement 1 est négatif ! Hé mais il y a moins de chiffre, donc moins de possibilités ! Et ben non avec cette technique on ne perd pas de mémoire/possibilités, parce que on peux aller de 2^7 à -(2^7) : 2^7 = 128, on ajoute les possibilités des négatifs : 256, et 2^8 = 256; Au final on ne perd rien

Pour avoir un nombre négatif, il nous faut du binaire signé, mais ce nombre négatif est inversé :

00000001 = 1 ; 11111111 = -1. Pour avoir - 52, on cherche 52 en binaire :

  • 52 / (division euclidienne) 2 = 26 + 0
  • 26 / 2 = 13 + 0
  • 13 / 2 = 6 + 1
  • 6 / 2 = 3 + 0
  • 3 / 2 = 1 + 1
  • 1 / 2 = 0 + 1

On prend les restes de bas en haut : 110100, puis ça donne 0011 0100 en octet ! Puis il suffit d'inverser les 1 et les 0 : 1100 1011, puis le tout +1 car on commence de 11111111

- 52 = (1100 1011) + 1 = 1100 1100

C'est pas magique ?

2. semi-soustracteur :

Entrons de le vif du sujet, il nous faut ça :

La soustraction ?

Directement on peut dire que pour la diff (différence) il nous faut une XOR, Pour le signe il nous faut une porte qui laisse passer le courant que dans un cas précis. Un cas sur quatre, ce que fait la AND ici; Donc il nous faut une AND, mais avec une entrée "bidouillée", pour avoir le signe à l’endroit attendu. Avec un inverseur sur la bonne entrée ça fait l'affaire

Ce qui nous donne un beau schéma :

La soustraction ?

3. Le soustracteur entier :

Ben c'est le même que celui de full adder, le signe étant la retenu ça donne ce schéma :

Pas très joli mais voilà ! La porte c'est une OR

Pas très joli mais voilà ! La porte c'est une OR

4. P et G :

Pas besoin de passer par la retenu propagé, car le concept de la retenu anticipé pour la soustraction est le même que pour l'addition :

Il faut bien comprendre que la retenu sur l'addition correspond au signe sur la soustraction, sauf qu'elle n'est pas calculé pareillement. Par contre elle est générée et propagé exactement de la même façon !

5. Mise en cascade :

La mise en cascade n'est pas différente que celle de l'addition, toujours le même calcul de P et G de l'unité. Pour ensuite faire 4 bits et 16, 64, etc... : une puissance de 4.

6. Micro calculette :

Maintenant avec tout ces mélanges de câbles, ces circuits logique, il est possible de faire une micro calculette qui additionne et soustrait. Vous entrez les chiffres binaire à additionner ou soustraire.

Pour la commande qui est de soustraire ou additionner vous mettez deux transistor au début de l'unité d'addition et de soustraction puis quand l'utilisateur appuie sur le bouton + ou -, ça calcul avec plus et moins. Mais il faut qu'il est deux clavier numérique, et que l'utilisateur appuie sur tout les boutons de son calcul en même temps. Mais ça marche ! Avec 10 transistors par full adder ou substractor, + 5 pour P et G, multiplié par 4 par unité, ensuite + 5 pour P et G de l'unité, soit 15*x+5*x/4, ou x est la nombre de bits. Ici 64*2, une pour l'addition et une pour la soustraction : 15*128+5*32 = 800, il faut environ 800 transistor pour faire un calcul si médiocre.

Biensûr notre calculette est améliorable :

  1. Rajouter la multiplication et la division
  2. Clavier convenable et un écran pas des LED

Ben c'est ce que nous allons faire dans les prochains articles : la multiplication ainsi que la division.

Nain0nain

Nain0nain

Retour au menu : fonctionnement du processeur
Commenter cet article

lisa 04/04/2017 11:25

Nice

Suivez nous sur :