<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[L'algèbre de Boole]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Bonjour, voici une présentation des bases de l'électronique numérique : la logique Booléenne ( ou algèbre de Boole ) .&lt;/p&gt;<br />
&lt;p&gt;Sujet en général passionnant pour les fans d'informatique et d'électronique  :lol: &lt;/p&gt;<br />
&lt;p&gt;Tout d'abord, qu'est-ce qui ce cache derrière ce nom étrange ? :&lt;/p&gt;<br />
&lt;ul&gt;&lt;li&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:sans-serif;"&gt;L'&lt;/span&gt;&lt;b&gt;algèbre de Boole&lt;/b&gt;&lt;span style="font-family:sans-serif;"&gt;, ou calcul booléen, est la partie des &lt;/span&gt;&lt;/span&gt;&lt;a href="<a href="http://fr.wikipedia.org/wiki/Math%C3%A9matiques" rel="nofollow ugc">http://fr.wikipedia.org/wiki/Mathématiques</a>" rel="external nofollow" title="Mathématiques"&gt;&lt;span style="color:#000000;"&gt;mathématiques&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:sans-serif;"&gt;, de la &lt;/span&gt;&lt;/span&gt;&lt;a href="<a href="http://fr.wikipedia.org/wiki/Logique" rel="nofollow ugc">http://fr.wikipedia.org/wiki/Logique</a>" rel="external nofollow" title="Logique"&gt;&lt;span style="color:#000000;"&gt;logique&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:sans-serif;"&gt; et de l'&lt;/span&gt;&lt;/span&gt;&lt;a href="<a href="http://fr.wikipedia.org/wiki/%C3%89lectronique" rel="nofollow ugc">http://fr.wikipedia.org/wiki/Électronique</a>" rel="external nofollow" title="Électronique"&gt;&lt;span style="color:#000000;"&gt;électronique&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:sans-serif;"&gt; qui s'intéresse aux opérations et aux fonctions sur les variables logiques.&lt;/span&gt;&lt;span style="font-family:sans-serif;"&gt; Plus spécifiquement, l'algèbre booléenne permet d'utiliser des techniques algébriques pour traiter les expressions à deux valeurs du &lt;/span&gt;&lt;/span&gt;&lt;a href="<a href="http://fr.wikipedia.org/wiki/Calcul_des_propositions" rel="nofollow ugc">http://fr.wikipedia.org/wiki/Calcul_des_propositions</a>" rel="external nofollow" title="Calcul des propositions"&gt;&lt;span style="color:#000000;"&gt;calcul des propositions&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:sans-serif;"&gt;. Elle fut initiée en 1854 par le mathématicien britannique &lt;/span&gt;&lt;/span&gt;&lt;strong&gt;&lt;a href="<a href="http://fr.wikipedia.org/wiki/George_Boole" rel="nofollow ugc">http://fr.wikipedia.org/wiki/George_Boole</a>" rel="external nofollow" title="George Boole"&gt;&lt;span style="color:#000000;"&gt;George Boole&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;span style="color:#000000;"&gt;&lt;span style="font-family:sans-serif;"&gt;.&lt;/span&gt;&lt;/span&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;span style="color:#000000;"&gt;Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des &lt;/span&gt;&lt;a href="<a href="http://fr.wikipedia.org/wiki/Circuits_%C3%A9lectroniques" rel="nofollow ugc">http://fr.wikipedia.org/wiki/Circuits_électroniques</a>" rel="external nofollow" title="Circuits électroniques"&gt;&lt;span style="color:#000000;"&gt;circuits électroniques&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt;. Elle fut utilisée la première fois pour les circuits de commutation téléphoniques par &lt;/span&gt;&lt;a href="<a href="http://fr.wikipedia.org/wiki/Claude_Shannon" rel="nofollow ugc">http://fr.wikipedia.org/wiki/Claude_Shannon</a>" rel="external nofollow" title="Claude Shannon"&gt;&lt;span style="color:#000000;"&gt;Claude Shannon&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt;.&lt;/span&gt;&lt;/p&gt;<br />
&lt;/li&gt;&lt;/ul&gt;&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;span style="color:#000000;"&gt;Merci Wikipédia  :rolleyes: &lt;/span&gt;&lt;span style="color:rgb(0,0,0);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"&gt; &lt;/span&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;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 : &lt;iframe data-embed-src="&lt;<em><strong>base_url</strong></em>&gt;/topic/1009-les-bases-de-la-num%C3%A9ration/?do=embed" data-embedcontent="" frameborder="0" src="<a href="//melinyel.net/applications/core/interface/js/spacer.png">//melinyel.net/applications/core/interface/js/spacer.png</a>"&gt;&lt;/iframe&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;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.&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;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 &lt;strong&gt;fonctions logiques.&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt; &lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;Je vous propose donc d'étudier ces fonctions logiques de base puis de s'amuser avec pour voir leur potentiel !&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt; &lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;strong&gt;I / fonctions logiques ( ou opérateurs logiques )&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;  A/ fonction ET (conjonction) &lt;strong&gt;AND&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;nous allons représenter cette fonction par un petit schéma...&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-06052800-1409087413.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;a et b sont nos entrées et L est la sortie de al fonction logique.&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;Voici l'équation : L = a . b  ( à lire L = a ET b )&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;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.&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;Un autre outil sympathique pour se représenter une fonction logique est ce que l'on appelle une table de vérité :&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-27766200-1409087710.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;les lignes sont à lire ainsi = "0 et 0 font 0", "0 et 1 font 0" ... et ainsi de suite.&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt; &lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;  B/ fonction OU (disjonction) &lt;strong&gt;OR&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;allon un peu plus vite :&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-71618500-1409087878.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-31477600-1409087879.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;avec l'équation : L = a+b   ( à lire L = a OU b )&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt; &lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;C / fonction NON (négation) &lt;strong&gt;NOT&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-46039100-1409088014.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-06166600-1409088015.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-53717900-1409088071.png"&gt;&lt;img alt="post-256-0-53717900-1409088071.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-53717900-1409088071.png" width="49"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt; &lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;D / fonction NON ET (conjonction négative) &lt;strong&gt;NAND&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;span style="color:rgb(34,34,34);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-51180300-1409088495.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;span style="color:rgb(34,34,34);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-32752300-1409088496.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;span style="color:rgb(34,34,34);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-91038500-1409088495.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;span style="color:rgb(34,34,34);font-family:'Helvetica Neue', Arial, Verdana, sans-serif;"&gt;Il s'agit en fait d'une fonction ET suivie d'une fonction NON&lt;/span&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt; &lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;E / fonction NON OU (disjonction négative) &lt;strong&gt;NOR&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-26036000-1409088642.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-84346600-1409088642.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-45136500-1409088643.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt; &lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;F / fonction OU EXCLUSIF ( disjonction exclusive ) &lt;strong&gt;XOR&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;En général les débutants butent un peu sur celle-là... on peut la traduire ainsi :&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;a OU b MAIS pas les deux. Voici comme d'habitude schéma, table de vérité et équation :&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-22393500-1409089019.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-82124900-1409089018.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-26364600-1409089020.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p style="color:rgb(37,37,37);font-family:sans-serif;"&gt;Fun fact : les développeurs Assembleur utilisent souvent cette fonction pour remettre à 0 une variable ( un registre ) :&lt;/p&gt;<br />
&lt;pre class="ipsCode prettyprint"&gt;<br />
xor ax,ax<br />
&lt;/pre&gt;<br />
&lt;p&gt;en effet, si vous vous amusez à poser l'opération ( imaginons que ax vaut 42, soit 00101010 ) :&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;       00101010&lt;/p&gt;<br />
&lt;p&gt;xor  00101010&lt;/p&gt;<br />
&lt;p&gt;=     00000000&lt;/p&gt;<br />
&lt;p&gt;et oui, 0 ou 0 mais pas les deux, ça fait 0 ; 1 ou 1 MAIS PAS LES DEUX, ça fait 0...&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;cette méthode est plus courte (en nombre d'octet) que de mettre 0 dans la variable directement :&lt;/p&gt;<br />
&lt;pre class="ipsCode prettyprint"&gt;<br />
mov ax, 0<br />
&lt;/pre&gt;<br />
&lt;p&gt;Mais on s'éloigne du sujet originel... il nous reste une dernière fonction logique !&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;G / fonction NON OU EXCLUSIF (disjonction exclusive négative) &lt;strong&gt;XNOR&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Il s'agit bêtement d'une xor avec une not derrière...&lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-62579900-1409089603.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-02067200-1409089604.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-32132700-1409089604.png"&gt;&lt;img alt="post-256-0-32132700-1409089604.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-32132700-1409089604.png" width="55"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;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 ).&lt;/p&gt;<br />
&lt;p&gt;&lt;/p&gt;&lt;p&gt;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.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Petit bonus : le théorème de De Morgan :&lt;/p&gt;<br />
&lt;p&gt;première loi : &lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-69095700-1409089870.png"&gt;&lt;img alt="post-256-0-69095700-1409089870.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-69095700-1409089870.png" width="93"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;deuxième loi : &lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-31130500-1409089870.png"&gt;&lt;img alt="post-256-0-31130500-1409089870.png" src="/assets/uploads/ips/monthly_08_2014/post-256-0-31130500-1409089870.png" width="94"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Vous êtes normalement capables de comprendre ceci par vous-même et j'aurais bien du mal à vous l'expliquer mieux que l'équation !&lt;/p&gt;<br />
&lt;p&gt;Le meilleur moyen de le maitriser est de faire des exercices... mais je n'ai pas mon cours sous la main  <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61e.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--disappointed" style="height:23px;width:auto;vertical-align:middle" title=":(" alt="😞" /> &lt;/p&gt;<br />
&lt;p&gt;Si ça vous intéresse : &lt;a href="<a href="http://fr.wikipedia.org/wiki/Lois_de_De_Morgan" rel="nofollow ugc">http://fr.wikipedia.org/wiki/Lois_de_De_Morgan</a>" rel="external nofollow"&gt;<a href="http://fr.wikipedia.org/wiki/Lois_de_De_Morgan" rel="nofollow ugc">http://fr.wikipedia.org/wiki/Lois_de_De_Morgan</a>&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;&lt;strong&gt;II / faire du calcul !&lt;/strong&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;aaaaaaaaah ! enfin quelque chose d'intéressant  <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f604.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--smile" style="height:23px;width:auto;vertical-align:middle" title=":D" alt="😄" />  !&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;A / les additionneurs ( adders )&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Voyons comment votre ordinateur fait des additions...&lt;/p&gt;<br />
&lt;p&gt;(à 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 &lt;a href="<a href="http://en.wikipedia.org/wiki/Kogge-Stone" rel="nofollow ugc">http://en.wikipedia.org/wiki/Kogge-Stone</a>" rel="external nofollow"&gt;Kogge-stone adder&lt;/a&gt;, qui est un carry-look-ahead adder (additionneur à calcul anticipé de retenue  :huh:  ) mais c'est pour une autre histoire ^_^   ! )&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;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 ? )&lt;/p&gt;<br />
&lt;p&gt;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.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Nous avons donc une sortie et une retenue, la sortie correspond à 2&lt;sup&gt;0 &lt;/sup&gt;et la retenue à 2&lt;sup&gt;1 &lt;/sup&gt;, respectivement nommées S et C (pour carry, retenue en anglais)&lt;/p&gt;<br />
&lt;p&gt;les équations : C = A.B&lt;/p&gt;<br />
&lt;p&gt;                        S = A⊕B &lt;/p&gt;<br />
&lt;p&gt;schéma et table de vérité :&lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-60114500-1409091231.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-26040900-1409091232.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;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 : &lt;a href="<a href="http://en.wikipedia.org/wiki/Logic_gate" rel="nofollow ugc">http://en.wikipedia.org/wiki/Logic_gate</a>" rel="external nofollow"&gt;<a href="http://en.wikipedia.org/wiki/Logic_gate" rel="nofollow ugc">http://en.wikipedia.org/wiki/Logic_gate</a>&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Bien, nous pouvons maintenant additionner deux bits... mais qu'en est-il si nos nombres font plus de 1 bit chacun ?&lt;/p&gt;<br />
&lt;p&gt;Il faudrait faire un half adder sur chaque couple de bits ( les 2&lt;sup&gt;0&lt;/sup&gt; avec les 2&lt;sup&gt;0&lt;/sup&gt;, les 2&lt;sup&gt;1&lt;/sup&gt; avec les 2&lt;sup&gt;1&lt;/sup&gt; etc...) puis faire un half-adder entre la retenue des 2&lt;sup&gt;0&lt;/sup&gt; et la sortie des 2&lt;sup&gt;1 &lt;/sup&gt;et puis....&lt;sup&gt;  <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f62e.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--open_mouth" style="height:23px;width:auto;vertical-align:middle" title=":o" alt="😮" />  &lt;/sup&gt;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&lt;sup&gt;e&lt;/sup&gt;...).&lt;/p&gt;<br />
&lt;p&gt;C'est pourquoi on a inventé le full-adder !&lt;/p&gt;<br />
&lt;p&gt;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.&lt;/p&gt;<br />
&lt;p&gt;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é.&lt;/p&gt;<br />
&lt;p&gt;on a : A+B+Cin = S+Cout (ici le + est un "plus" et non pas un OU).&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-37045200-1409092139.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-07243700-1409092140.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;Pour les équations : S = (A⊕ B )⊕Cin&lt;/p&gt;<br />
&lt;p&gt;                                 Cout = (A. B ) + (Cin . (A⊕ B ) )&lt;/p&gt;<br />
&lt;p&gt;Donc oui la fonction logique tout 0 droite est bien une OU.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;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 :&lt;/p&gt;<br />
&lt;p&gt;A&lt;sub&gt;3&lt;/sub&gt;A&lt;sub&gt;2&lt;/sub&gt;A&lt;sub&gt;1&lt;/sub&gt;A&lt;sub&gt;0&lt;/sub&gt; et B&lt;sub&gt;3&lt;/sub&gt;B&lt;sub&gt;2&lt;/sub&gt;B&lt;sub&gt;1&lt;/sub&gt;B&lt;sub&gt;0&lt;/sub&gt;&lt;/p&gt;<br />
&lt;p&gt;et on chaine les adders comme suit :&lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-80392700-1409092138.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Et bien ma foi, nous voici rendu avec les additions !  <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f604.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--smile" style="height:23px;width:auto;vertical-align:middle" title=":D" alt="😄" /> &lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;B / la soustraction&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;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:  .&lt;/p&gt;<br />
&lt;p&gt;Rappellez-vous ... A-B = A+(- B ). Cours de maths niveau 5&lt;sup&gt;e&lt;/sup&gt;.&lt;/p&gt;<br />
&lt;p&gt;Et pour trouver l'opposé d'un nombre binaire, c'est très simple.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt; Cherchons -12. prenons la valeur absolue : (0b00001100), inversez-le bit à bit =&gt; 0b11110011, puis ajouter 1 =&gt; 0b11110100.&lt;/p&gt;<br />
&lt;p&gt;Et voilà votre nombre en binaire signé ( complément à deux ) ! simple non ?&lt;/p&gt;<br />
&lt;p&gt;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.&lt;/p&gt;<br />
&lt;p&gt;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 .&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;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 <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61b.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--stuck_out_tongue" style="height:23px;width:auto;vertical-align:middle" title=":P" alt="😛" />  ) 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 :&lt;/p&gt;<br />
&lt;p&gt;&lt;a class="attach-link" href="/assets/uploads/ips/monthly_08_2014/post-256-0-54900000-1409094784.png"&gt;&lt;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"/&gt;&lt;/a&gt;&lt;/p&gt;<br />
&lt;p&gt;photoshop pro here !  <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f61b.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--stuck_out_tongue" style="height:23px;width:auto;vertical-align:middle" title=":P" alt="😛" /> &lt;/p&gt;<br />
&lt;p&gt;&lt;/p&gt;&lt;p&gt;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  <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f609.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--wink" style="height:23px;width:auto;vertical-align:middle" title=";)" alt="😉" />  ).&lt;/p&gt;</p>
]]></description><link>https://melinyel.net/topic/1030/lalgèbre-de-boole</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 04:55:38 GMT</lastBuildDate><atom:link href="https://melinyel.net/topic/1030.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Aug 2014 23:19:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to L'algèbre de Boole on Wed, 27 Aug 2014 17:41:07 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Merci pour ce cours, qui est vital dans les métiers des semi-conducteurs (Intel, etc...) : c'est exactement sur cette base qu'on réalise des transistors en silicium dopé afin d'accélérer la vitesse de traitement des ordinateurs. <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> &lt;br/&gt;<br />
Deuxième sujet que tu postes et qui est pertinent. Bon début.&lt;br/&gt;&lt;br/&gt;<br />
+1 réputation.&lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/10967</link><guid isPermaLink="true">https://melinyel.net/post/10967</guid><dc:creator><![CDATA[Azad]]></dc:creator><pubDate>Wed, 27 Aug 2014 17:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to L'algèbre de Boole on Wed, 27 Aug 2014 17:39:52 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Merci du partage c'est utile en électronique(c'est comme ça que fonctionne un processeur xD)&lt;br/&gt;<br />
J'ai jamais travaillé avec les européens xD&lt;br/&gt;&lt;br/&gt;<br />
+1Rep&lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/10949</link><guid isPermaLink="true">https://melinyel.net/post/10949</guid><dc:creator><![CDATA[mars073]]></dc:creator><pubDate>Wed, 27 Aug 2014 17:39:52 GMT</pubDate></item><item><title><![CDATA[Reply to L'algèbre de Boole on Wed, 27 Aug 2014 07:34:28 GMT]]></title><description><![CDATA[<p dir="auto">&lt;p&gt;Merci pour le clin d'oeil a mon tuto ! <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /> &lt;/p&gt;<br />
&lt;p&gt;Effectivement, je n'étais pas encore prêt a faire celui-ci.&lt;/p&gt;<br />
&lt;p&gt; &lt;/p&gt;<br />
&lt;p&gt;Merci Patulle ! <img src="https://melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f604.png?v=d0a000c383a" class="not-responsive emoji emoji-android emoji--smile" style="height:23px;width:auto;vertical-align:middle" title=":D" alt="😄" /> &lt;/p&gt;</p>
]]></description><link>https://melinyel.net/post/10948</link><guid isPermaLink="true">https://melinyel.net/post/10948</guid><dc:creator><![CDATA[Pirkoa]]></dc:creator><pubDate>Wed, 27 Aug 2014 07:34:28 GMT</pubDate></item></channel></rss>