<p>Bonjour, voici une présentation des bases de l'électronique numérique : la logique Booléenne ( ou algèbre de Boole ) .</p>
<p>Sujet en général passionnant pour les fans d'informatique et d'électronique :lol: </p>
<p>Tout d'abord, qu'est-ce qui ce cache derrière ce nom étrange ? :</p>
<ul><li><span style="color:#000000;"><span style="font-family:sans-serif;">L'</span><b>algèbre de Boole</b><span style="font-family:sans-serif;">, ou calcul booléen, est la partie des </span></span><a href="http://fr.wikipedia.org/wiki/Mathématiques" rel="external nofollow" title="Mathématiques"><span style="color:#000000;">mathématiques</span></a><span style="color:#000000;"><span style="font-family:sans-serif;">, de la </span></span><a href="http://fr.wikipedia.org/wiki/Logique" rel="external nofollow" title="Logique"><span style="color:#000000;">logique</span></a><span style="color:#000000;"><span style="font-family:sans-serif;"> et de l'</span></span><a href="http://fr.wikipedia.org/wiki/Électronique" rel="external nofollow" title="Électronique"><span style="color:#000000;">électronique</span></a><span style="color:#000000;"><span style="font-family:sans-serif;"> qui s'intéresse aux opérations et aux fonctions sur les variables logiques.</span><span style="font-family:sans-serif;"> Plus spécifiquement, l'algèbre booléenne permet d'utiliser des techniques algébriques pour traiter les expressions à deux valeurs du </span></span><a href="http://fr.wikipedia.org/wiki/Calcul_des_propositions" rel="external nofollow" title="Calcul des propositions"><span style="color:#000000;">calcul des propositions</span></a><span style="color:#000000;"><span style="font-family:sans-serif;">. Elle fut initiée en 1854 par le mathématicien britannique </span></span><strong><a href="http://fr.wikipedia.org/wiki/George_Boole" rel="external nofollow" title="George Boole"><span style="color:#000000;">George Boole</span></a></strong><span style="color:#000000;"><span style="font-family:sans-serif;">.</span></span>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><span style="color:#000000;">Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des </span><a href="http://fr.wikipedia.org/wiki/Circuits_électroniques" rel="external nofollow" title="Circuits électroniques"><span style="color:#000000;">circuits électroniques</span></a><span style="color:#000000;">. Elle fut utilisée la première fois pour les circuits de commutation téléphoniques par </span><a href="http://fr.wikipedia.org/wiki/Claude_Shannon" rel="external nofollow" title="Claude Shannon"><span style="color:#000000;">Claude Shannon</span></a><span style="color:#000000;">.</span></p>
</li></ul><p style="color:rgb(37,37,37);font-family:sans-serif;"><span style="color:#000000;">Merci Wikipédia :rolleyes: </span><span style="color:rgb(0,0,0);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"> </span></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">Avant de lire ce post, je vous conseille de savoir compter en binaire, si ce n'est pas votre cas, vous trouverez des explications claires ici : <iframe data-embed-src="<base_url>/topic/1009-les-bases-de-la-num%C3%A9ration/?do=embed" data-embedcontent="" frameborder="0" src="//melinyel.net/applications/core/interface/js/spacer.png"></iframe></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">Bien, vous savez compter en binaire mais vous ne savez toujours pas concrètement ce qu'est l'algèbre booléenne, on avance pas décidément.</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">L'algèbre de Boole consiste à traiter les informations avec la plus simple ( et pourtant tellemeeeeeeent complexe... ) des logique, ici l'information est soit vraie, soit fausse ( 1 ou 0 ) pas de doute possible. On va donc associer ces 0 et ces 1 grâce à ce que l'on appelle des <strong>fonctions logiques.</strong></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> </p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">Je vous propose donc d'étudier ces fonctions logiques de base puis de s'amuser avec pour voir leur potentiel !</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> </p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><strong>I / fonctions logiques ( ou opérateurs logiques )</strong></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> A/ fonction ET (conjonction) <strong>AND</strong></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">nous allons représenter cette fonction par un petit schéma...</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-06052800-1409087413.png"><img alt="post-256-0-06052800-1409087413_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-06052800-1409087413_thumb.png" width="100"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">a et b sont nos entrées et L est la sortie de al fonction logique.</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">Voici l'équation : L = a . b ( à lire L = a ET b )</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">rappelons que nous travaillons en binaire, a et b valent donc soit 0 soit 1. l'équation nous dit que L ne vaut 1 si et seulement si a ET b valent tous deux 1... d'où le nom.</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">Un autre outil sympathique pour se représenter une fonction logique est ce que l'on appelle une table de vérité :</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-27766200-1409087710.png"><img alt="post-256-0-27766200-1409087710_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-27766200-1409087710_thumb.png" width="96"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">les lignes sont à lire ainsi = "0 et 0 font 0", "0 et 1 font 0" ... et ainsi de suite.</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> </p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> B/ fonction OU (disjonction) <strong>OR</strong></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">allon un peu plus vite :</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-71618500-1409087878.png"><img alt="post-256-0-71618500-1409087878_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-71618500-1409087878_thumb.png" width="100"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-31477600-1409087879.png"><img alt="post-256-0-31477600-1409087879_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-31477600-1409087879_thumb.png" width="95"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">avec l'équation : L = a+b ( à lire L = a OU b )</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> </p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">C / fonction NON (négation) <strong>NOT</strong></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-46039100-1409088014.png"><img alt="post-256-0-46039100-1409088014_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-46039100-1409088014_thumb.png" width="100"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-06166600-1409088015.png"><img alt="post-256-0-06166600-1409088015_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-06166600-1409088015_thumb.png" width="91"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-53717900-1409088071.png"><img alt="post-256-0-53717900-1409088071.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-53717900-1409088071.png" width="49"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> </p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">D / fonction NON ET (conjonction négative) <strong>NAND</strong></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><span style="color:rgb(34,34,34);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-51180300-1409088495.png"><img alt="post-256-0-51180300-1409088495_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-51180300-1409088495_thumb.png" width="100"/></a></span></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><span style="color:rgb(34,34,34);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-32752300-1409088496.png"><img alt="post-256-0-32752300-1409088496_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-32752300-1409088496_thumb.png" width="97"/></a></span></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><span style="color:rgb(34,34,34);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-91038500-1409088495.png"><img alt="post-256-0-91038500-1409088495_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-91038500-1409088495_thumb.png" width="100"/></a></span></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><span style="color:rgb(34,34,34);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;">Il s'agit en fait d'une fonction ET suivie d'une fonction NON</span></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> </p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">E / fonction NON OU (disjonction négative) <strong>NOR</strong></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-26036000-1409088642.png"><img alt="post-256-0-26036000-1409088642_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-26036000-1409088642_thumb.png" width="100"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-84346600-1409088642.png"><img alt="post-256-0-84346600-1409088642_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-84346600-1409088642_thumb.png" width="97"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-45136500-1409088643.png"><img alt="post-256-0-45136500-1409088643_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-45136500-1409088643_thumb.png" width="100"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"> </p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">F / fonction OU EXCLUSIF ( disjonction exclusive ) <strong>XOR</strong></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">En général les débutants butent un peu sur celle-là... on peut la traduire ainsi :</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">a OU b MAIS pas les deux. Voici comme d'habitude schéma, table de vérité et équation :</p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-22393500-1409089019.png"><img alt="post-256-0-22393500-1409089019_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-22393500-1409089019_thumb.png" width="100"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-82124900-1409089018.png"><img alt="post-256-0-82124900-1409089018_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-82124900-1409089018_thumb.png" width="100"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;"><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-26364600-1409089020.png"><img alt="post-256-0-26364600-1409089020_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-26364600-1409089020_thumb.png" width="100"/></a></p>
<p style="color:rgb(37,37,37);font-family:sans-serif;">Fun fact : les développeurs Assembleur utilisent souvent cette fonction pour remettre à 0 une variable ( un registre ) :</p>
<pre class="ipsCode prettyprint">
xor ax,ax
</pre>
<p>en effet, si vous vous amusez à poser l'opération ( imaginons que ax vaut 42, soit 00101010 ) :</p>
<p> </p>
<p> 00101010</p>
<p>xor 00101010</p>
<p>= 00000000</p>
<p>et oui, 0 ou 0 mais pas les deux, ça fait 0 ; 1 ou 1 MAIS PAS LES DEUX, ça fait 0...</p>
<p> </p>
<p>cette méthode est plus courte (en nombre d'octet) que de mettre 0 dans la variable directement :</p>
<pre class="ipsCode prettyprint">
mov ax, 0
</pre>
<p>Mais on s'éloigne du sujet originel... il nous reste une dernière fonction logique !</p>
<p> </p>
<p>G / fonction NON OU EXCLUSIF (disjonction exclusive négative) <strong>XNOR</strong></p>
<p> </p>
<p>Il s'agit bêtement d'une xor avec une not derrière...</p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-62579900-1409089603.png"><img alt="post-256-0-62579900-1409089603_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-62579900-1409089603_thumb.png" width="100"/></a></p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-02067200-1409089604.png"><img alt="post-256-0-02067200-1409089604_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-02067200-1409089604_thumb.png" width="76"/></a></p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-32132700-1409089604.png"><img alt="post-256-0-32132700-1409089604.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-32132700-1409089604.png" width="55"/></a></p>
<p>Vous remarquez cette bulle derrière la fonction logique à la place d'un petit triangle ? c'est une autre représentation pour dire que l'on à inversé la sortie ( on y a mit une fonction NON ).</p>
<p></p><p>Pfiou c'est fini pour la présentation bête et méchante des fonction logiques ! :lol: à noter qu'il en exister deux trois autres telles que l'implication ou l'inhibition mais bon, moins utilisées.</p>
<p> </p>
<p>Petit bonus : le théorème de De Morgan :</p>
<p>première loi : <a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-69095700-1409089870.png"><img alt="post-256-0-69095700-1409089870.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-69095700-1409089870.png" width="93"/></a></p>
<p>deuxième loi : <a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-31130500-1409089870.png"><img alt="post-256-0-31130500-1409089870.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-31130500-1409089870.png" width="94"/></a></p>
<p> </p>
<p>Vous êtes normalement capables de comprendre ceci par vous-même et j'aurais bien du mal à vous l'expliquer mieux que l'équation !</p>
<p>Le meilleur moyen de le maitriser est de faire des exercices... mais je n'ai pas mon cours sous la main </p>
<p>Si ça vous intéresse : <a href="http://fr.wikipedia.org/wiki/Lois_de_De_Morgan" rel="external nofollow">http://fr.wikipedia.org/wiki/Lois_de_De_Morgan</a></p>
<p> </p>
<p><strong>II / faire du calcul !</strong></p>
<p> </p>
<p>aaaaaaaaah ! enfin quelque chose d'intéressant !</p>
<p> </p>
<p>A / les additionneurs ( adders )</p>
<p> </p>
<p>Voyons comment votre ordinateur fait des additions...</p>
<p>(à peu près, les ingénieurs de proco on depuis longtemps abandonné cette méthode pour se tourner vers des additionneurs plus performant, notamment le <a href="http://en.wikipedia.org/wiki/Kogge-Stone" rel="external nofollow">Kogge-stone adder</a>, qui est un carry-look-ahead adder (additionneur à calcul anticipé de retenue :huh: ) mais c'est pour une autre histoire ^_^ ! )</p>
<p> </p>
<p>commençons doucement avec le demi additionneur (half-adder) : nous allons additionner deux bits, le bit A et le bit B ( ça va pour le moment ? )</p>
<p>dans le cas où les deux valent 1, on aura 2 en sortie, n'est-ce pas ? il nous faudra donc prévoir deux bits de sortie pour écrire 2 en binaire : 10.</p>
<p> </p>
<p>Nous avons donc une sortie et une retenue, la sortie correspond à 2<sup>0 </sup>et la retenue à 2<sup>1 </sup>, respectivement nommées S et C (pour carry, retenue en anglais)</p>
<p>les équations : C = A.B</p>
<p> S = A⊕B </p>
<p>schéma et table de vérité :</p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-60114500-1409091231.png"><img alt="post-256-0-60114500-1409091231_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-60114500-1409091231_thumb.png" width="100"/></a></p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-26040900-1409091232.png"><img alt="post-256-0-26040900-1409091232_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-26040900-1409091232_thumb.png" width="100"/></a></p>
<p> </p>
<p>Vous remarquerez que le schéma utilise des fonctions logiques que vous n'avez jamais vues... en fait c'est la représentation américaine (Wikipédia m'a lâchement lâcher (ooh un pléonasme ! ) sur ce coup), croyez-moi la fonction du dessus est une XOR et celle du dessous est une AND. faites un tour ici pour avoir les versions françaises et américaine côte à côte : <a href="http://en.wikipedia.org/wiki/Logic_gate" rel="external nofollow">http://en.wikipedia.org/wiki/Logic_gate</a></p>
<p> </p>
<p>Bien, nous pouvons maintenant additionner deux bits... mais qu'en est-il si nos nombres font plus de 1 bit chacun ?</p>
<p>Il faudrait faire un half adder sur chaque couple de bits ( les 2<sup>0</sup> avec les 2<sup>0</sup>, les 2<sup>1</sup> avec les 2<sup>1</sup> etc...) puis faire un half-adder entre la retenue des 2<sup>0</sup> et la sortie des 2<sup>1 </sup>et puis....<sup> </sup>et puis on s'écroule sur la table parce que dès qu'il y a plus de 4 bits sur chaque nombre, même le schéma sur une feuille de papier avec un crayon devient un vrai clavaire :wacko: (j'ai déjà essayer en 4<sup>e</sup>...).</p>
<p>C'est pourquoi on a inventé le full-adder !</p>
<p>Ce petit bijou fait la différence entre la retenue entrante et la retenue sortante, il additionne ainsi trois bits et possède deux bits en sortie.</p>
<p>en reliant la retenue sortante (carry out) à la retenue entrante (carry in) du full-adder suivant, on additionne nos nombre sans avoir à gérer un truc ultra-compliqué.</p>
<p>on a : A+B+Cin = S+Cout (ici le + est un "plus" et non pas un OU).</p>
<p> </p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-37045200-1409092139.png"><img alt="post-256-0-37045200-1409092139_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-37045200-1409092139_thumb.png" width="55"/></a></p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-07243700-1409092140.png"><img alt="post-256-0-07243700-1409092140_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-07243700-1409092140_thumb.png" width="100"/></a></p>
<p>Pour les équations : S = (A⊕ B )⊕Cin</p>
<p> Cout = (A. B ) + (Cin . (A⊕ B ) )</p>
<p>Donc oui la fonction logique tout 0 droite est bien une OU.</p>
<p> </p>
<p>Je vous avais parlé de relier le Cout d'un adder au Cin du suivant... cela s'appel chainer les additionneurs, mettons que nous voulons faire A+B (plus hein, pas OU) mais que A et B font tous deux 4 bits, ils seront composé comme ceci :</p>
<p>A<sub>3</sub>A<sub>2</sub>A<sub>1</sub>A<sub>0</sub> et B<sub>3</sub>B<sub>2</sub>B<sub>1</sub>B<sub>0</sub></p>
<p>et on chaine les adders comme suit :</p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-80392700-1409092138.png"><img alt="post-256-0-80392700-1409092138_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-80392700-1409092138_thumb.png" width="100"/></a></p>
<p> </p>
<p>Et bien ma foi, nous voici rendu avec les additions ! </p>
<p> </p>
<p>B / la soustraction</p>
<p> </p>
<p>Et là, c'est le drame, vous avez peur de devoir vous replonger dans des schéma compliqués et incompréhensibles et tout reprendre de 0... Mais non ! si nous rusons il y a moyen de reprendre le travail déjà fait jusque là :ph34r: .</p>
<p>Rappellez-vous ... A-B = A+(- B ). Cours de maths niveau 5<sup>e</sup>.</p>
<p>Et pour trouver l'opposé d'un nombre binaire, c'est très simple.</p>
<p> </p>
<p> Cherchons -12. prenons la valeur absolue : (0b00001100), inversez-le bit à bit => 0b11110011, puis ajouter 1 => 0b11110100.</p>
<p>Et voilà votre nombre en binaire signé ( complément à deux ) ! simple non ?</p>
<p>et avec des fonctions logiques ? il suffit d'appliquer la fonction NON sur notre chiffre... puis de le faire passer dans un adder avec un 1.</p>
<p>Mieux encore, regardez le schéma des full-adders chainés, n'y voyez-vous pas une première retenue entrante inutile ? le voilà notre 1 à ajouter ! pour faire une soustraction, il suffit de faire une addition, sauf que l'on met la première Cin à 1 et que l'on fait passer B par une fonction NON .</p>
<p> </p>
<p>Mais il y a encore mieux, on peut utiliser le même chainage d'adders pour faire des additions et des soustractions ! il suffit de faire passer B par des fonction XOR, la deuxième entrée de chaque XOR étant reliée... à Cin, ainsi si Cin est à 0, B reste inchangé, Cin est à 0 (sans blague ) et on fait une addition entre A et B. Si Cin est à 1, le XOR va inverser chaque bits de B et le chaînage d'adders va ajouter 1 en plus, on aura une soustraction entre A et B (A-B pour être précis) :huh: . en image :</p>
<p><a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-54900000-1409094784.png"><img alt="post-256-0-54900000-1409094784_thumb.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-54900000-1409094784_thumb.png" width="100"/></a></p>
<p>photoshop pro here ! </p>
<p></p><p>Et bien voilà... vos neurones peuvent désormais reposer en paix. Si vous voulez plus de masturbation intellectuelle faites-le moi savoir et je m'attaquerai aux multiplicateurs... et si vous voulez du hardcore je vous proposerai des diviseurs... et pour l'orgasme intellectuel, il y a le sujet qui me tient le plus à coeur : les carry-look-ahead adders ( comme le kogge-stone adder dont j'avais mentionné l'existence ).</p>