<p>i release my private librairy &quot;qbytes&quot; (quantique bytes)<br>this is a mathematic tool where all bits of a double word have 3 states : one , zero and unknow<br>i implemented the addition , multiplication (with an integer), a new concept &quot;fusion&quot; (equivalent to = ) , and all basic booleean functions (binary version of xor, or, no , and)
<br>there are some utilities like error detection, error depth etc ...</p>
<p>i used this lib for coding fuckmd5.cpp</p>
<p>if you want to use multithreading the code need modification</p>
<p>i think this tool is good for easy recomputation and error detection in the case of a cryptographic attack</p>
<p>quantique.h : structure definition<br>qbyte.h : class definition<br>qbyte.cpp : all the functions</p>
<p>download link : <a href="http://81.57.125.106/~slythers/qbyte%20and%20md5%20recomputation.rar">http://81.57.125.106/~slythers/qbyte%20and%20md5%20recomputation.rar</a></p>
<p>the quantique.h<br>-----------------------------------------------------------------------------<br>/*<br>(c) b4d coder<br>Malloc(0) Wicked Attitude</p>
<p>Copyright (c) 2006, overdose : <a href="mailto:slythers@gmail.com">slythers@gmail.com</a><br>All rights reserved.</p>
<p>Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:</p>
<p>&nbsp;&nbsp;&nbsp; * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.<br>&nbsp;&nbsp;&nbsp; * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
<br>&nbsp;&nbsp;&nbsp; * Neither the name of the Malloc(0) Wicked Attitude nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.</p>
<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,<br>BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
<br>IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,<br>OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
<br>OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,<br>OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
<br>OF SUCH DAMAGE.<br>*/</p>
<p>#define PARAM_LIST_SIZE_BASE (sizeof(unsigned int)+sizeof(unsigned char)+sizeof(char)+sizeof(bool))<br>#define MAX_ADD (255)</p>
<p>struct quantique<br>{<br>&nbsp;unsigned int value;<br>&nbsp;unsigned int know;<br>};</p>
<p>struct quantparam{<br>&nbsp;unsigned int size;<br>&nbsp;char type;<br>&nbsp;unsigned char nb;<br>&nbsp;bool error;<br>&nbsp;struct quantique *wesh[2];<br>};</p>
<p><br>the qbyte.h<br>-----------------------------------------------------------------------------<br>/*<br>&nbsp;B4d coder (c)<br>&nbsp;Quantique Bytes librairy (cryptographic attack tool)<br>&nbsp;coded by <a href="mailto:overdose/slythers@gmail.com">
overdose/slythers@gmail.com</a><br>&nbsp;Malloc(0) Wicked Attitude<br>&nbsp;<a href="http://malloczerowickedattitude.new.fr/">http://malloczerowickedattitude.new.fr</a><br>&nbsp;<br>&nbsp;created:10/03/2006<br>*/<br>#include &lt;iostream.h&gt;
<br>#include &quot;quantique.h&quot;</p>
<p>class qbyte<br>{<br>&nbsp;public:<br>&nbsp;&nbsp;qbyte();<br>&nbsp;&nbsp;bool error;<br>&nbsp;&nbsp;unsigned int value;<br>&nbsp;&nbsp;unsigned int know;<br>&nbsp;&nbsp;static unsigned int ldepth;<br>&nbsp;&nbsp;static unsigned int hdepth;<br>&nbsp;&nbsp;bool multi(qbyte &amp;un,unsigned int entier);
<br>&nbsp;&nbsp;bool add(qbyte &amp;un,qbyte &amp;deux);<br>&nbsp;&nbsp;bool xor(qbyte &amp;un,qbyte &amp;deux);<br>&nbsp;&nbsp;bool and(qbyte &amp;un,qbyte &amp;deux);<br>&nbsp;&nbsp;bool or(qbyte &amp;un,qbyte &amp;deux);<br>&nbsp;&nbsp;bool no(qbyte &amp;un);<br>&nbsp;&nbsp;void no();
<br>&nbsp;&nbsp;bool fusion(qbyte &amp;of);<br>&nbsp;&nbsp;void copy(qbyte &amp;a);<br>&nbsp;&nbsp;bool existbit(unsigned int number);<br>&nbsp;&nbsp;void setbit(unsigned int number,bool value);<br>&nbsp;&nbsp;void disablebit(unsigned int number);<br>&nbsp;&nbsp;bool getbit(unsigned int number);
<br>&nbsp;&nbsp;void copyrealvalue();<br>&nbsp;&nbsp;void setvalue();<br>&nbsp;&nbsp;void setvalue(unsigned int v);<br>&nbsp;&nbsp;void leftrotation(unsigned int nb);<br>&nbsp;&nbsp;void rightrotation(unsigned int nb);<br>&nbsp;&nbsp;void leftdecalage(unsigned int nb);<br>&nbsp;&nbsp;void rightdecalage(unsigned int nb);
<br>&nbsp;&nbsp;//systeme de profondeur des erreur<br>&nbsp;&nbsp;bool enabledepth();<br>&nbsp;&nbsp;bool depthisenable();<br>&nbsp;&nbsp;bool disabledepth();<br>&nbsp;&nbsp;void reinitdepth();<br>&nbsp;&nbsp;unsigned int getldepth();<br>&nbsp;&nbsp;unsigned int gethdepth();<br>&nbsp;&nbsp;unsigned int getredzone();
<br>&nbsp;&nbsp;bool depthsaved();<br>&nbsp;&nbsp;bool enablecopyerror();<br>&nbsp;&nbsp;bool disablecopyerror();<br>&nbsp;&nbsp;//surcharge des opérateurs, be aware to memory leak<br>&nbsp;&nbsp;struct quantparam * operator * (unsigned int constante);<br>&nbsp;&nbsp;struct quantparam * operator + (qbyte &amp;a);
<br>&nbsp;&nbsp;struct quantparam * operator + (struct quantparam * list);<br>&nbsp;&nbsp;struct quantparam * operator | (qbyte &amp;a);<br>&nbsp;&nbsp;struct quantparam * operator | (struct quantparam * list);<br>&nbsp;&nbsp;struct quantparam * operator &amp; (qbyte &amp;a);
<br>&nbsp;&nbsp;struct quantparam * operator &amp; (struct quantparam * list);<br>&nbsp;&nbsp;struct quantparam * operator ^ (qbyte &amp;a);<br>&nbsp;&nbsp;struct quantparam * operator ^ (struct quantparam * list);<br>&nbsp;&nbsp;bool operator = (struct quantparam *list);
<br>&nbsp;&nbsp;bool operator = (qbyte &amp;a);<br>&nbsp;&nbsp;//machin amie<br>&nbsp;&nbsp;friend ostream &amp;operator &lt;&lt; (ostream &amp;sortie, qbyte &amp;a)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;sortie &lt;&lt; &quot;Quantique Bytes value: &quot;&lt;&lt;hex&lt;&lt;a.me.value
&lt;&lt;&quot; Mask: &quot;&lt;&lt;a.me.know&lt;&lt;dec&lt;&lt;&quot; Error:&quot;&lt;&lt;a.error&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;return sortie;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;struct quantique me;<br>&nbsp;private:<br>&nbsp;&nbsp;bool checkbitforadd(struct quantique *x,struct quantique *y,struct quantique *z);
<br>&nbsp;&nbsp;bool checkbitforxor(struct quantique *x,struct quantique *y,struct quantique *z);<br>&nbsp;&nbsp;bool checkbitforand(struct quantique *x,struct quantique *y,struct quantique *z);<br>&nbsp;&nbsp;bool checkbitforor(struct quantique *x,struct quantique *y,struct quantique *z);
<br>&nbsp;&nbsp;bool checkfusion(struct quantique *x,struct quantique *y);<br>&nbsp;&nbsp;bool checkmulti(struct quantique *x,unsigned int entier,struct quantique *z);<br>&nbsp;&nbsp;bool pyramide(struct quantparam *list,char type);<br>&nbsp;&nbsp;struct quantparam *addtolist(struct quantparam * list,char type);
<br>&nbsp;&nbsp;struct quantparam *newlist(qbyte &amp;a,char type);<br>&nbsp;&nbsp;void increment();<br>&nbsp;&nbsp;void savedepth();<br>&nbsp;&nbsp;void savedepth(bool b);<br>&nbsp;&nbsp;static unsigned int compteur;<br>&nbsp;&nbsp;static unsigned int compteur2;<br>&nbsp;&nbsp;static unsigned int profondeur;
<br>&nbsp;&nbsp;static unsigned int profondeur2;<br>&nbsp;&nbsp;static unsigned int redzone;<br>&nbsp;&nbsp;static bool copyerror;<br>&nbsp;&nbsp;static bool enable;<br>&nbsp;&nbsp;static bool initialised;<br>&nbsp;&nbsp;static bool saved;<br>};</p>
<p><br>the qbyte.cpp<br>-----------------------------------------------------------------------------<br>/*<br>(c) B4d coder<br>Malloc(0) Wicked Attitude</p>
<p>Copyright (c) 2006, overdose : <a href="mailto:slythers@gmail.com">slythers@gmail.com</a><br>All rights reserved.</p>
<p>private stuff</p>
<p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,<br>BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
<br>IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,<br>OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
<br>OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,<br>OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
<br>OF SUCH DAMAGE.<br>*/</p>
<p>#include &quot;qbyte.h&quot;</p>
<p>bool qbyte::initialised = 0;<br>unsigned int qbyte::ldepth;<br>unsigned int qbyte::hdepth;<br>unsigned int qbyte::compteur;<br>unsigned int qbyte::compteur2;<br>unsigned int qbyte::profondeur;<br>unsigned int qbyte::profondeur2;
<br>unsigned int qbyte::redzone;<br>bool qbyte::copyerror;<br>bool qbyte::enable;<br>bool qbyte::saved;</p>
<p><br>qbyte::qbyte()<br>{<br>&nbsp;this-&gt;value = 0x00;<br>&nbsp;this-&gt;know = 0x00;<br>&nbsp;me.value = 0x00;<br>&nbsp;me.know = 0x00;<br>&nbsp;error = 0;<br>&nbsp;if(!initialised)<br>&nbsp;{<br>&nbsp;&nbsp;initialised = 1;<br>&nbsp;&nbsp;copyerror = 1;<br>&nbsp;&nbsp;disabledepth();
<br>&nbsp;}<br>}</p>
<p>bool qbyte::checkbitforadd(struct quantique *x,struct quantique *y,struct quantique *z)<br>{<br>&nbsp;bool modified=0;<br>&nbsp;bool retenuemodified =0;<br>&nbsp;bool retmod=0;<br>&nbsp;unsigned int flagerror = 0x00;<br>&nbsp;unsigned int mask;
<br>&nbsp;struct quantique save1,save2,save3;<br>&nbsp;save1 = *x;<br>&nbsp;save2 = *y;<br>&nbsp;save3 = *z;<br>&nbsp;struct quantique retenue;<br>&nbsp;retenue.value = 0x00;<br>&nbsp;retenue.know = 0x00;<br>&nbsp;increment();<br>&nbsp;do{<br>&nbsp;&nbsp;if(modified)<br>&nbsp;&nbsp;&nbsp;retmod = 1;
<br>&nbsp;&nbsp;modified = 0;<br>&nbsp;&nbsp;retenuemodified = 0;<br>&nbsp;&nbsp;mask = 0x01;<br>&nbsp;&nbsp;for(unsigned char cpt = 0;cpt &lt;32;cpt++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;//si on connait toute les valeurs on calcul la retenue et on se casse pas<br>&nbsp;&nbsp;&nbsp;if((z-&gt;know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; !(
retenue.know &amp; mask))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;/*if(retenue.know &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!cpt)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;value &amp; mask) &amp;&amp; (y-&gt;value &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if(retenue.know &amp; (mask&gt;&gt;1))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(&nbsp; ((x-&gt;value &amp; mask) || (y-&gt;value &amp; mask)) &amp;&amp; ( ((x-&gt;value &amp; mask) &amp;&amp; (y-&gt;value &amp; mask)) || (
retenue.value &amp; (mask&gt;&gt;1)) )&nbsp; )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if(((x-&gt;value &amp; mask) &amp;&amp; (y-&gt;value &amp; mask)))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;//continue;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;//premier bit pas de retenue<br>&nbsp;&nbsp;&nbsp;if(!cpt)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;//au cas ou on connait la retenue
<br>&nbsp;&nbsp;&nbsp;&nbsp;if((retenue.know &amp; mask) &amp;&amp; (!(x-&gt;know &amp; mask) || !(y-&gt;know &amp; mask)) &amp;&amp; (retenue.value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if((retenue.know &amp; mask) &amp;&amp; !(x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; (y-&gt;value &amp; mask) &amp;&amp; !(
retenue.value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if((retenue.know &amp; mask) &amp;&amp; !(y-&gt;know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (x-&gt;value &amp; mask) &amp;&amp; !(
retenue.value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;//si on connait le bit du resultat<br>&nbsp;&nbsp;&nbsp;&nbsp;if(z-&gt;know &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//si on connait le bit de x a 1 et pas y
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; (x-&gt;value &amp; mask) &amp;&amp; !(y-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//on met y a 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(z-&gt;value &amp; mask)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; !(x-&gt;value &amp; mask) &amp;&amp; !(y-&gt;know &amp; mask))// bit de x a 0<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(z-&gt;value &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//on connait y et pas x<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((y-&gt;know &amp; mask) &amp;&amp; (y-&gt;value &amp; mask) &amp;&amp; !(x-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//on met y a 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(z-&gt;value &amp; mask)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((y-&gt;know &amp; mask) &amp;&amp; !(y-&gt;value &amp; mask) &amp;&amp; !(x-&gt;know &amp; mask) )// bit de x a 0
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(z-&gt;value &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;//si on connait les deux !
<br>&nbsp;&nbsp;&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; !(z-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( (x-&gt;value &amp; mask) ^ (y-&gt;value &amp; mask) )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;//calcul de la retenue<br>&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; !(retenue.know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;value &amp; mask) &amp;&amp; (y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;
<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;//on verifie les erreurs<br>&nbsp;&nbsp;&nbsp;&nbsp;if((z-&gt;know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(( (x-&gt;value &amp; mask) ^ (y-&gt;value &amp; mask) ) != (z-&gt;value &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(flagerror &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagerror |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;savedepth(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;//au cas ou on connait la retenue courante et peut etre la precedente pas z mais !a&nbsp; | !b
<br>&nbsp;&nbsp;&nbsp;&nbsp;if((retenue.know &amp; mask) &amp;&amp; (!(x-&gt;know &amp; mask) || !(y-&gt;know &amp; mask))/* &amp;&amp; !(z-&gt;know &amp; mask)*/)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((retenue.value &amp; mask) &amp;&amp; (retenue.know &amp; (mask&gt;&gt;1)) &amp;&amp; !(
retenue.value &amp; (mask&gt;&gt;1)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((retenue.value
 &amp; mask) &amp;&amp; (retenue.know &amp; (mask&gt;&gt;1)) &amp;&amp; (retenue.value &amp; (mask&gt;&gt;1)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; !(x-&gt;value &amp; mask) &amp;&amp; !(y-&gt;know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((y-&gt;know &amp; mask) &amp;&amp; !(y-&gt;value &amp; mask) &amp;&amp; !(x-&gt;know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((retenue.know &amp; (mask&gt;&gt;1)) &amp;&amp; (retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; !(
retenue.value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((retenue.know
 &amp; (mask&gt;&gt;1)) &amp;&amp; !(retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; !(retenue.value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((y-&gt;know &amp; mask) &amp;&amp; (y-&gt;value &amp; mask) &amp;&amp; !(x-&gt;know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; (x-&gt;value &amp; mask) &amp;&amp; !(y-&gt;know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//au cas ou on connait pas la précendente valeur<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(!(retenue.know &amp; (mask&gt;&gt;1)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((retenue.value &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; !(x-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((retenue.value &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; !(y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;//calcul avec retenue precedente inconnu wesh <br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(retenue.know &amp; (mask &gt;&gt; 1)))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((retenue.know &amp; mask) &amp;&amp; (z-&gt;know &amp; mask) &amp;&amp; !(
retenue.value &amp; mask) &amp;&amp; !(z-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug ret&quot;&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= (mask&gt;&gt;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value
 &amp;= ~(mask&gt;&gt;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//calcul de la retenu precedente<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; (z-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= (mask &gt;&gt; 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( ((x-&gt;value &amp; mask) ^ (y-&gt;value &amp; mask)) ^ (z-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= (mask &gt;&gt; 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value
 &amp;= ~(mask &gt;&gt; 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//on connait la retenue actuel et x et y<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; (retenue.know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//si Rx=1 et !(x&amp;&amp;y) alors rx-1 = 1
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((retenue.value &amp; mask)&nbsp; &amp;&amp; !((x-&gt;value &amp; mask) &amp;&amp; (y-&gt;value &amp; mask)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug 17&quot;&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= (mask&gt;&gt;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= (mask&gt;&gt;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// si rx = 0 et x||y rx-1 = 0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(!(retenue.value &amp; mask) &amp;&amp; ((x-&gt;value &amp; mask) || (y-&gt;value &amp; mask)) )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= (mask&gt;&gt;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~(mask&gt;&gt;1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;//calcul avec retenue precedente connu<br>&nbsp;&nbsp;&nbsp;&nbsp;else if( 
retenue.know &amp; (mask &gt;&gt; 1))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; !(z-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;value &amp; mask) ^ (y-&gt;value &amp; mask) ^ ((
retenue.value &amp; (mask&gt;&gt;1))&lt;&lt;1))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; !(y-&gt;know &amp; mask) &amp;&amp; (z-&gt;know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;value &amp; mask) ^ (z-&gt;value &amp; mask) ^ ((retenue.value &amp; (mask&gt;&gt;1))&lt;&lt;1))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(!(x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; (z-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((z-&gt;value &amp; mask) ^ (y-&gt;value &amp; mask) ^ ((retenue.value &amp; (mask&gt;&gt;1))&lt;&lt;1))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//calcul retenu
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(retenue.know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; !(y-&gt;know &amp; mask) &amp;&amp; !(z-&gt;know &amp; mask) )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; !(x-&gt;value &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; (x-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if(!(retenue.know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; !(x-&gt;know &amp; mask) &amp;&amp; !(z-&gt;know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; !(y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else if((retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; (y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;};
<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;//calcul de la retenu<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(retenue.know &amp; mask) &amp;&amp; (retenue.know &amp; (mask&gt;&gt;1)) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if( ((x-&gt;value &amp; mask) &amp;&amp; (y-&gt;value &amp; mask)) || ((x-&gt;value &amp; mask) &amp;&amp; (retenue.value &amp; (mask&gt;&gt;1))) || ((retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; (y-&gt;value &amp; mask)) )
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if(!(retenue.know &amp; mask) &amp;&amp; !(retenue.know &amp; (mask&gt;&gt;1)) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; (x-&gt;value &amp; mask) &amp;&amp; (y-&gt;value &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if(!(retenue.know &amp; mask) &amp;&amp; (retenue.know &amp; (mask&gt;&gt;1)) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; !(y-&gt;know &amp; mask) &amp;&amp; !(
retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; !(x-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if(!(retenue.know &amp; mask) &amp;&amp; (
retenue.know &amp; (mask&gt;&gt;1)) &amp;&amp; !(x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; !(retenue.value &amp; (mask&gt;&gt;1)) &amp;&amp; !(y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; !(x-&gt;value &amp; mask) &amp;&amp; !(y-&gt;value &amp; mask) &amp;&amp; !(
retenue.know &amp; mask) )<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug ret 2&quot;&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; (x-&gt;value &amp; mask) &amp;&amp; (y-&gt;value &amp; mask) &amp;&amp; !(
retenue.know &amp; mask) )<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug ret 3&quot;&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenuemodified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retenue.value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;//on verifie les erreurs
<br>&nbsp;&nbsp;if((z-&gt;know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask) &amp;&amp; cpt &amp;&amp; (retenue.know &amp; (mask&gt;&gt;1)))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(( (x-&gt;value &amp; mask) ^ (y-&gt;value &amp; mask) ^ ((
retenue.value &amp; (mask&gt;&gt;1))&lt;&lt;1) ) != (z-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(flagerror &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagerror |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;savedepth(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;error = 1;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>
&nbsp;&nbsp;mask = mask &lt;&lt;1;<br>&nbsp;&nbsp;}<br>&nbsp;}while(modified || retenuemodified);<br>&nbsp;//verification des erreur<br>&nbsp;if(!(~(x-&gt;know)) &amp;&amp; !(~(y-&gt;know)) &amp;&amp; !(~(z-&gt;know)))<br>&nbsp;{<br>&nbsp;&nbsp;if((x-&gt;value + y-&gt;value) != z-&gt;value)
<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;&nbsp;error = 1;<br>&nbsp;&nbsp;}<br>&nbsp;}<br>&nbsp;if((save1.value &amp; save1.know) != (x-&gt;value &amp; save1.know))<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;if((save2.value &amp; save2.know) != (y-&gt;value &amp; 
save2.know))<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;if((save3.value &amp; save3.know) != (z-&gt;value &amp; save3.know))<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;return retmod;<br>}</p>
<p>//version fast ...<br>bool qbyte::checkmulti(struct quantique *x,unsigned int entier,struct quantique *z)<br>{<br>&nbsp;struct quantique pile[32];<br>&nbsp;struct quantique palier;<br>&nbsp;struct quantique copiedex;<br>&nbsp;struct quantique cx,cz;
<br>&nbsp;unsigned int mask;<br>&nbsp;unsigned char cpt,nb,max;<br>&nbsp;bool modified=0;<br>&nbsp;cx = *x;<br>&nbsp;cz = *z; <br>&nbsp;palier.value = 0x00;<br>&nbsp;palier.know = 0x00;<br>&nbsp;nb = 0;<br>&nbsp;increment();<br>&nbsp;for(cpt =0; cpt&lt;32;cpt++)<br>&nbsp;{<br>
&nbsp;&nbsp;pile[cpt].value = 0x00;<br>&nbsp;&nbsp;pile[cpt].know = 0x00;<br>&nbsp;}<br>&nbsp;for(max =31;!((0x01&lt;&lt;max) &amp; entier) &amp;&amp; max ;max--);<br>&nbsp;pile[0].know = 0xffffffff;<br>&nbsp;do{<br>&nbsp;&nbsp;modified = 0;<br>&nbsp;&nbsp;mask = 0x01&lt;&lt;31;<br>
&nbsp;&nbsp;nb = 0;<br>&nbsp;&nbsp;for(cpt=0;cpt&lt;32;cpt++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(mask &amp; entier)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;palier.value = x-&gt;value &lt;&lt; (31-cpt);<br>&nbsp;&nbsp;&nbsp;&nbsp;palier.know = (x-&gt;know &lt;&lt; (31-cpt)) | ((cpt == 31) ? 0x00 : (0xffffffff &gt;&gt; (cpt+1)) );
<br>&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforadd(&amp;(pile[nb]),&amp;palier, (cpt == max)? z : &amp;(pile[nb+1]) ))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;nb++;<br>&nbsp;&nbsp;&nbsp;&nbsp;palier.value = palier.value &gt;&gt; (31-cpt);<br>&nbsp;&nbsp;&nbsp;&nbsp;palier.know = palier.know &gt;&gt; (31-cpt);
<br>&nbsp;&nbsp;&nbsp;&nbsp;copiedex.know = x-&gt;know;<br>&nbsp;&nbsp;&nbsp;&nbsp;if(checkfusion(&amp;palier,x))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(copiedex.know != x-&gt;know)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;mask = mask &gt;&gt;1;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;//on refait dans l&#39;autre sens
<br>&nbsp;&nbsp;for(;cpt;cpt--)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(mask &amp; entier)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;palier.value = (x-&gt;value) &lt;&lt; (31-(cpt-1));<br>&nbsp;&nbsp;&nbsp;&nbsp;palier.know = (x-&gt;know) &lt;&lt; (31-(cpt-1)) | ((cpt == 32) ? 0x00 : (0xffffffff &gt;&gt; (cpt)) );
<br>&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforadd(&amp;(pile[nb]),&amp;palier, (cpt == (max+1))? z : &amp;(pile[nb+1]) ))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;nb--;<br>&nbsp;&nbsp;&nbsp;&nbsp;palier.value = (palier.value) &gt;&gt; (31-(cpt-1));<br>&nbsp;&nbsp;&nbsp;&nbsp;palier.know = (palier.know
) &gt;&gt; (31-(cpt-1));<br>&nbsp;&nbsp;&nbsp;&nbsp;copiedex.know = x-&gt;know;<br>&nbsp;&nbsp;&nbsp;&nbsp;if(checkfusion(&amp;palier,x))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(copiedex.know != x-&gt;know)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;mask = mask &lt;&lt;1;<br>&nbsp;&nbsp;}
<br>&nbsp;}while(modified &amp;&amp; !error);<br>&nbsp;//verification erreur<br>&nbsp;if(cx.value != (x-&gt;value &amp; cx.know))<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;if(cz.value != (z-&gt;value &amp; cz.know))<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();
<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;if((cz.know != z-&gt;know) || (cx.know != x-&gt;know))<br>&nbsp;&nbsp;return 1;<br>&nbsp;return 0;<br>}</p>
<p>bool qbyte::checkbitforxor(struct quantique *x,struct quantique *y,struct quantique *z)<br>{<br>&nbsp;bool modified=0;<br>&nbsp;unsigned int mask=0x01;<br>&nbsp;unsigned int tmp;<br>&nbsp;unsigned int flagerror=0x00;<br>&nbsp;increment();<br>
&nbsp;tmp = z-&gt;know &amp; x-&gt;know &amp; y-&gt;know;<br>&nbsp;if((z-&gt;value &amp; tmp) != ((x-&gt;value &amp; tmp) ^ (y-&gt;value &amp; tmp)))<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;for(unsigned int cpt = 0;cpt&lt;32;cpt++)
<br>&nbsp;{<br>&nbsp;&nbsp;if(z-&gt;know &amp; mask)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(z-&gt;value &amp; mask)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; (x-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug 1&quot;&lt;&lt;endl;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(y-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if((y-&gt;know &amp; mask) &amp;&amp; (y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug 2&quot;&lt;&lt;endl;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(x-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if(x-&gt;know &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug 3&quot;&lt;&lt;endl;
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(y-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(x-&gt;value&amp;mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;else if(y-&gt;know &amp; mask)
<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug 4&quot;&lt;&lt;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//inutile ici mais bon =)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!(x-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(y-&gt;value&amp;mask)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;//cout &lt;&lt;&quot;debug 5&quot;&lt;&lt;endl;
<br>&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;if((x-&gt;value &amp; mask) ^ (y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;};<br>&nbsp;&nbsp;//on check les erreur<br>&nbsp;&nbsp;if((z-&gt;know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask))
<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if((z-&gt;value &amp; mask) != ((x-&gt;value &amp; mask) ^ (y-&gt;value &amp; mask)))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(flagerror &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagerror |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;savedepth(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;error = 1;
<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;mask = mask &lt;&lt; 1;<br>&nbsp;}<br>&nbsp;return modified;<br>}</p>
<p>bool qbyte::checkbitforand(struct quantique *x,struct quantique *y,struct quantique *z)<br>{<br>&nbsp;bool modified=0;<br>&nbsp;unsigned int mask=0x01;<br>&nbsp;unsigned int flagerror = 0x00;<br>&nbsp;unsigned int tmp;<br>&nbsp;increment();<br>
&nbsp;tmp = z-&gt;know &amp; x-&gt;know &amp; y-&gt;know;<br>&nbsp;if((z-&gt;value &amp; tmp) != ((x-&gt;value &amp; tmp) &amp; (y-&gt;value &amp; tmp)))<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;for(unsigned int cpt = 0;cpt&lt;32;cpt++)
<br>&nbsp;{<br>&nbsp;&nbsp;if((z-&gt;know &amp; mask) &amp;&amp; (z-&gt;value &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(!((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask)) )<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;
<br>&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if((z-&gt;know &amp; mask) &amp;&amp; !(z-&gt;value &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask)&amp;&amp;(x-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;if(!(y-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else if((y-&gt;know &amp; mask)&amp;&amp;(y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(x-&gt;know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if(!(z-&gt;know &amp; mask) &amp;&amp; ((x-&gt;know &amp; mask) || (y-&gt;know &amp; mask)))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; !(x-&gt;value &amp; mask))
<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else if((y-&gt;know &amp; mask) &amp;&amp; !(y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;
<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask))// normelement les deux sont a 1<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value |= mask;
<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;};<br>&nbsp;&nbsp;//on check les erreur<br>&nbsp;&nbsp;if((z-&gt;know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if((z-&gt;value &amp; mask) != ((x-&gt;value &amp; mask) &amp; (y-&gt;value &amp; mask)))
<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(flagerror &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagerror |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;savedepth(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;error = 1;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;mask = mask&lt;&lt;1;<br>&nbsp;}<br>&nbsp;return modified;<br>}</p>
<p>bool qbyte::checkbitforor(struct quantique *x,struct quantique *y,struct quantique *z)<br>{<br>&nbsp;bool modified=0;<br>&nbsp;unsigned int mask=0x01;<br>&nbsp;unsigned int tmp;<br>&nbsp;unsigned int flagerror = 0x00;<br>&nbsp;increment();<br>
&nbsp;tmp = z-&gt;know &amp; x-&gt;know &amp; y-&gt;know;<br>&nbsp;if((z-&gt;value &amp; tmp) != ((x-&gt;value &amp; tmp) | (y-&gt;value &amp; tmp)))<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;for(unsigned int cpt = 0;cpt&lt;32;cpt++)
<br>&nbsp;{<br>&nbsp;&nbsp;if((z-&gt;know &amp; mask) &amp;&amp; !(z-&gt;value &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(!((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask)) )<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;
<br>&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if((z-&gt;know &amp; mask) &amp;&amp; (z-&gt;value &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; !(x-&gt;value &amp; mask))
<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(y-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else if((y-&gt;know &amp; mask) &amp;&amp; !(y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(x-&gt;know &amp; mask))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;};<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if(!(z-&gt;know &amp; mask) &amp;&amp; ((x-&gt;know &amp; mask) || (y-&gt;know &amp; mask)))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if((x-&gt;know &amp; mask) &amp;&amp; (x-&gt;value &amp; mask))
<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else if((y-&gt;know &amp; mask) &amp;&amp; (y-&gt;value &amp; mask))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;
<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else if((x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask))// normelement le deux sont a 0<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;z-&gt;value &amp;= ~mask;
<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;};<br>&nbsp;&nbsp;//on check les erreur<br>&nbsp;&nbsp;if((z-&gt;know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; (y-&gt;know &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if((z-&gt;value &amp; mask) != ((x-&gt;value &amp; mask) | (y-&gt;value &amp; mask)))
<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;if(!(flagerror &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flagerror |= mask;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;savedepth(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;error = 1;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;mask = mask&lt;&lt;1;<br>&nbsp;}<br>&nbsp;return modified;<br>}</p>
<p>bool qbyte::multi(qbyte &amp;un,unsigned int entier)<br>{<br>&nbsp;bool ret;<br>&nbsp;error |= un.error ;<br>&nbsp;if(error)<br>&nbsp;&nbsp;return 0;<br>&nbsp;ret = checkmulti(&amp;(un.me),entier,&amp;(this-&gt;me));<br>&nbsp;copyrealvalue();<br>&nbsp;return ret;
<br>}</p>
<p>bool qbyte::add(qbyte &amp;un,qbyte &amp;deux)<br>{<br>&nbsp;bool ret;<br>&nbsp;error |= un.error | deux.error;<br>&nbsp;/*if(error)<br>&nbsp;&nbsp;return 0;*/<br>&nbsp;ret = checkbitforadd(&amp;(un.me),&amp;(deux.me),&amp;(this-&gt;me));<br>&nbsp;copyrealvalue();
<br>&nbsp;return ret;<br>}</p>
<p>bool qbyte::xor(qbyte &amp;un,qbyte &amp;deux)<br>{<br>&nbsp;bool ret;<br>&nbsp;error |= un.error | deux.error;<br>&nbsp;/*if(error)<br>&nbsp;&nbsp;return 0;*/<br>&nbsp;ret = checkbitforxor(&amp;(un.me),&amp;(deux.me),&amp;(this-&gt;me));<br>&nbsp;copyrealvalue();
<br>&nbsp;return ret;<br>}</p>
<p>bool qbyte::and(qbyte &amp;un,qbyte &amp;deux)<br>{<br>&nbsp;bool ret;<br>&nbsp;error |= un.error | deux.error;<br>&nbsp;/*if(error)<br>&nbsp;&nbsp;return 0;*/<br>&nbsp;ret = checkbitforand(&amp;(un.me),&amp;(deux.me),&amp;(this-&gt;me));<br>&nbsp;copyrealvalue();
<br>&nbsp;return ret;<br>}</p>
<p>bool qbyte::or(qbyte &amp;un,qbyte &amp;deux)<br>{<br>&nbsp;bool ret;<br>&nbsp;error |= un.error | deux.error;<br>&nbsp;/*if(error)<br>&nbsp;&nbsp;return 0;*/<br>&nbsp;ret = checkbitforor(&amp;(un.me),&amp;(deux.me),&amp;(this-&gt;me));<br>&nbsp;copyrealvalue();
<br>&nbsp;return ret;<br>}</p>
<p>bool qbyte::no(qbyte &amp;un)<br>{<br>&nbsp;bool modified=0;<br>&nbsp;unsigned int mask=0x01;<br>&nbsp;unsigned int tmp;<br>&nbsp;struct quantique *x;<br>&nbsp;increment();<br>&nbsp;x = &amp;(un.me);<br>&nbsp;tmp = me.know &amp; x-&gt;know;<br>&nbsp;if((me.value
 &amp; tmp) != (~(x-&gt;value) &amp; tmp) )<br>&nbsp;{<br>&nbsp;&nbsp;savedepth();<br>&nbsp;&nbsp;error = 1;<br>&nbsp;}<br>&nbsp;for(unsigned int cpt = 0;cpt&lt;32;cpt++)<br>&nbsp;{<br>&nbsp;&nbsp;if((me.know &amp; mask) &amp;&amp; !(x-&gt;know &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;modified = 1;
<br>&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;if(me.value &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if(!(me.know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask))<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;modified = 1;
<br>&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;if(x-&gt;value &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;me.value &amp;= ~mask;<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;me.value |= mask;<br>&nbsp;&nbsp;};<br>&nbsp;&nbsp;if( (me.know &amp; mask) &amp;&amp; (x-&gt;know &amp; mask) &amp;&amp; ((me.value &amp; mask) != (~(x-&gt;value) &amp; mask)) )
<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;savedepth(1);<br>&nbsp;&nbsp;&nbsp;error = 1;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;mask = mask &lt;&lt; 1;<br>&nbsp;}<br>&nbsp;copyrealvalue();<br>&nbsp;return modified;<br>}</p>
<p>void qbyte::no()<br>{<br>&nbsp;me.value = ~(me.value);<br>&nbsp;me.value &amp;= me.know;<br>&nbsp;copyrealvalue();<br>}</p>
<p>bool qbyte::checkfusion(struct quantique *x,struct quantique *y)<br>{<br>&nbsp;bool modified=0;<br>&nbsp;unsigned int mask=0x01;<br>&nbsp;increment();<br>&nbsp;for(unsigned int cpt = 0;cpt&lt;32;cpt++)<br>&nbsp;{<br>&nbsp;&nbsp;if(x-&gt;know &amp; mask)
<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if((y-&gt;know &amp; mask) &amp;&amp; ((x-&gt;value &amp; mask) != (y-&gt;value &amp; mask)) )<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;savedepth(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;error = 1;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;if(!(y-&gt;know &amp; mask))<br>&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>
&nbsp;&nbsp;&nbsp;y-&gt;know |= mask;<br>&nbsp;&nbsp;&nbsp;if(x-&gt;value &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;y-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else if(y-&gt;know &amp; mask)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;x-&gt;know |= mask;
<br>&nbsp;&nbsp;&nbsp;if(y-&gt;value &amp; mask)<br>&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value |= mask;<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;x-&gt;value &amp;= ~mask;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;mask = mask &lt;&lt; 1;<br>&nbsp;}<br>&nbsp;return modified;<br>}</p>
<p>bool qbyte::fusion(qbyte &amp;of)<br>{<br>&nbsp;bool modified=0;<br>&nbsp;modified = checkfusion(&amp;(of.me),&amp;(this-&gt;me));<br>&nbsp;copyrealvalue();<br>&nbsp;return modified;<br>}</p>
<p>void qbyte::copy(qbyte &amp;a)<br>{<br>&nbsp;me.value = a.me.value;<br>&nbsp;me.know = a.me.know;<br>&nbsp;if(copyerror)<br>&nbsp;&nbsp;this-&gt;error = a.error;<br>&nbsp;copyrealvalue();<br>}</p>
<p>void qbyte::setbit(unsigned int number,bool value)<br>{<br>&nbsp;me.know |= (0x01&lt;&lt;number);<br>&nbsp;if(value)<br>&nbsp;&nbsp;me.value |= (0x01&lt;&lt;number);<br>&nbsp;else<br>&nbsp;&nbsp;me.value &amp;= ~(0x01&lt;&lt;number);<br>&nbsp;copyrealvalue();
<br>}</p>
<p>bool qbyte::existbit(unsigned int number)<br>{<br>&nbsp;return (me.know &amp; (0x01&lt;&lt;number));<br>}</p>
<p>void qbyte::disablebit(unsigned int number)<br>{<br>&nbsp;me.know &amp;= ~(0x01&lt;&lt;number);<br>&nbsp;me.value&nbsp; &amp;= me.know;<br>&nbsp;copyrealvalue();<br>}</p>
<p>bool qbyte::getbit(unsigned int number)<br>{<br>&nbsp;return (me.value &amp; (0x01&lt;&lt;number));<br>}</p>
<p>void qbyte::copyrealvalue()<br>{<br>&nbsp;this-&gt;value = me.value;<br>&nbsp;this-&gt;know = me.know;<br>}</p>
<p>void qbyte::setvalue()<br>{<br>&nbsp;me.value = this-&gt;value &amp; this-&gt;know ;<br>&nbsp;me.know = this-&gt;know;<br>}</p>
<p>void qbyte::setvalue(unsigned int v)<br>{<br>&nbsp;me.value = v;<br>&nbsp;me.know = 0xffffffff;<br>}</p>
<p>void qbyte::leftrotation(unsigned int nb)<br>{<br>&nbsp;if(!(nb %32))<br>&nbsp;&nbsp;return;<br>&nbsp;me.value = ( ((me.value) &lt;&lt; (nb)) | ((me.value) &gt;&gt; (32-(nb))) );<br>&nbsp;me.know = ( ((me.know) &lt;&lt; (nb)) | ((me.know) &gt;&gt; (32-(nb))) );
<br>&nbsp;copyrealvalue();<br>}</p>
<p>void qbyte::rightrotation(unsigned int nb)<br>{<br>&nbsp;if(!(nb %32))<br>&nbsp;&nbsp;return;<br>&nbsp;me.value = (((me.value) &gt;&gt; (nb)) | ((me.value) &lt;&lt; (32-(nb))));<br>&nbsp;me.know = (((me.know) &gt;&gt; (nb)) | ((me.know) &lt;&lt; (32-(nb))));
<br>&nbsp;copyrealvalue();<br>}</p>
<p>void qbyte::leftdecalage(unsigned int nb)<br>{<br>&nbsp;me.value = me.value &lt;&lt; nb;<br>&nbsp;me.know = me.know &lt;&lt; nb;<br>&nbsp;copyrealvalue();<br>}</p>
<p>void qbyte::rightdecalage(unsigned int nb)<br>{<br>&nbsp;me.value = me.value &gt;&gt; nb;<br>&nbsp;me.know = me.know &gt;&gt; nb;<br>&nbsp;copyrealvalue();<br>}</p>
<p>//surcharge des operateurs<br>//a debugguer ... surtout le return modif faut checker que les entrée/sorie qui pourrait avoir changer<br>bool qbyte::pyramide(struct quantparam *list,char type)<br>{<br>&nbsp;struct quantique abc[MAX_ADD][MAX_ADD/2];
<br>&nbsp;unsigned char endessous[MAX_ADD];<br>&nbsp;unsigned char nbporte[MAX_ADD];<br>&nbsp;unsigned char cpt,ptr,hauteur,tmp;<br>&nbsp;bool modified=0;<br>&nbsp;bool ret;<br>&nbsp;ret =0;<br>&nbsp;if(list-&gt;nb &lt; 3)<br>&nbsp;{<br>&nbsp;&nbsp;switch(type)<br>&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;case &#39;+&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;return checkbitforadd(list-&gt;wesh[0],list-&gt;wesh[1],&amp;(this-&gt;me));<br>&nbsp;&nbsp;&nbsp;case &#39;|&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;return checkbitforor(list-&gt;wesh[0],list-&gt;wesh[1],&amp;(this-&gt;me));<br>&nbsp;&nbsp;&nbsp;case &#39;&amp;&#39;:
<br>&nbsp;&nbsp;&nbsp;&nbsp;return checkbitforand(list-&gt;wesh[0],list-&gt;wesh[1],&amp;(this-&gt;me));<br>&nbsp;&nbsp;&nbsp;case &#39;^&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;return checkbitforxor(list-&gt;wesh[0],list-&gt;wesh[1],&amp;(this-&gt;me));<br>&nbsp;&nbsp;&nbsp;case &#39;*&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;return checkmulti(list-&gt;wesh[0],(unsigned int) list-&gt;wesh[1],&amp;(this-&gt;me));
<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;return 0;<br>&nbsp;}<br>&nbsp;for(cpt=0;cpt&lt;MAX_ADD;cpt++)<br>&nbsp;{<br>&nbsp;&nbsp;endessous[cpt] = 0xff;<br>&nbsp;&nbsp;for(ptr=0;ptr &lt; (MAX_ADD/2);ptr++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;abc[cpt][ptr].know = 0x00;<br>&nbsp;&nbsp;&nbsp;abc[cpt][ptr].value = 0x00;<br>&nbsp;&nbsp;}
<br>&nbsp;}<br>&nbsp;do{<br>&nbsp;&nbsp;if(modified)<br>&nbsp;&nbsp;&nbsp;ret = 1;<br>&nbsp;&nbsp;modified = 0;<br>&nbsp;&nbsp;//on divise une premere fois par deux<br>&nbsp;&nbsp;hauteur = list-&gt;nb/2;<br>&nbsp;&nbsp;if(hauteur %2)<br>&nbsp;&nbsp;&nbsp;hauteur++;<br>&nbsp;&nbsp;hauteur -= 2;<br>&nbsp;&nbsp;hauteur = hauteur/2;
<br>&nbsp;&nbsp;tmp = list-&gt;nb;<br>&nbsp;&nbsp;if(tmp%2)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;abc[(tmp/2)+1][0] = *(list-&gt;wesh[tmp]);<br>&nbsp;&nbsp;&nbsp;endessous[0] = tmp;<br>&nbsp;&nbsp;&nbsp;tmp = tmp /2;<br>&nbsp;&nbsp;&nbsp;nbporte[0] = tmp;<br>&nbsp;&nbsp;&nbsp;tmp++;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;else<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;tmp = tmp /2;
<br>&nbsp;&nbsp;&nbsp;nbporte[0] = tmp;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;for(unsigned char ok=0;ok &lt; list-&gt;nb;ok+=2)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;switch(type)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;case &#39;+&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforadd(list-&gt;wesh[ok],list-&gt;wesh[ok+1],&amp;(abc[ok/2][0]));
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;case &#39;|&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforor(list-&gt;wesh[ok],list-&gt;wesh[ok+1],&amp;(abc[ok/2][0]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;case &#39;&amp;&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforand(list-&gt;wesh[ok],list-&gt;wesh[ok+1],&amp;(abc[ok/2][0]));
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;case &#39;^&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforxor(list-&gt;wesh[ok],list-&gt;wesh[ok+1],&amp;(abc[ok/2][0]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;for(cpt = 0;cpt &lt; hauteur;cpt++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(tmp%2)<br>
&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;abc[(tmp/2)+1][cpt+1] = abc[tmp][cpt];<br>&nbsp;&nbsp;&nbsp;&nbsp;endessous[cpt+1] = tmp;<br>&nbsp;&nbsp;&nbsp;&nbsp;tmp = tmp /2;<br>&nbsp;&nbsp;&nbsp;&nbsp;nbporte[cpt+1] = tmp;<br>&nbsp;&nbsp;&nbsp;&nbsp;tmp++;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;tmp = tmp /2;<br>&nbsp;&nbsp;&nbsp;&nbsp;nbporte[cpt+1] = tmp;
<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;for(ptr=0;ptr &lt; nbporte[cpt+1];ptr++)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;switch(type)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;+&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforadd(&amp;(abc[ptr*2][cpt]),&amp;(abc[(ptr*2)+1][cpt]),&amp;(abc[ptr][cpt+1]));
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;|&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforor(&amp;(abc[ptr*2][cpt]),&amp;(abc[(ptr*2)+1][cpt]),&amp;(abc[ptr][cpt+1]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;&amp;&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforand(&amp;(abc[ptr*2][cpt]),&amp;(abc[(ptr*2)+1][cpt]),&amp;(abc[ptr][cpt+1]));
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;^&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforxor(&amp;(abc[ptr*2][cpt]),&amp;(abc[(ptr*2)+1][cpt]),&amp;(abc[ptr][cpt+1]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;switch(type)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;case &#39;+&#39;:
<br>&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforadd(&amp;(abc[0][cpt]),&amp;(abc[1][cpt]),&amp;(this-&gt;me)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;case &#39;|&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforor(&amp;(abc[0][cpt]),&amp;(abc[1][cpt]),&amp;(this-&gt;me)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;case &#39;&amp;&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforand(&amp;(abc[0][cpt]),&amp;(abc[1][cpt]),&amp;(this-&gt;me)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;case &#39;^&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforxor(&amp;(abc[0][cpt]),&amp;(abc[1][cpt]),&amp;(this-&gt;me)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;//on refait dans l&#39;autre sens peut etre on aura pas besoin de boucler ^^ a verifier<br>&nbsp;&nbsp;if(endessous[cpt] != 0xff)<br>&nbsp;&nbsp;&nbsp;abc[endessous[cpt]][cpt-1] = abc[1][cpt];<br>&nbsp;&nbsp;for(;cpt;cpt--)
<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;for(ptr=0; ptr &lt; nbporte[cpt];ptr++)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;switch(type)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;+&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforadd(&amp;(abc[ptr*2][cpt-1]),&amp;(abc[(ptr*2)+1][cpt-1]),&amp;(abc[ptr][cpt]));<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;|&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforor(&amp;(abc[ptr*2][cpt-1]),&amp;(abc[(ptr*2)+1][cpt-1]),&amp;(abc[ptr][cpt]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;&amp;&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforand(&amp;(abc[ptr*2][cpt-1]),&amp;(abc[(ptr*2)+1][cpt-1]),&amp;(abc[ptr][cpt]));
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case &#39;^&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;checkbitforxor(&amp;(abc[ptr*2][cpt-1]),&amp;(abc[(ptr*2)+1][cpt-1]),&amp;(abc[ptr][cpt]));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;if(endessous[cpt] != 0xff)<br>&nbsp;&nbsp;&nbsp;&nbsp;abc[endessous[cpt]][cpt-1] = abc[ptr+1][cpt];
<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;if(endessous[0] != 0xff)<br>&nbsp;&nbsp;&nbsp;*(list-&gt;wesh[tmp]) = abc[nbporte[cpt]][0];<br>&nbsp;&nbsp;for(unsigned char ok=0;ok &lt; list-&gt;nb;ok+=2)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;switch(type)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;case &#39;+&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforadd(list-&gt;wesh[ok],list-&gt;wesh[ok+1],&amp;(abc[ok/2][0])))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;case &#39;|&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforor(list-&gt;wesh[ok],list-&gt;wesh[ok+1],&amp;(abc[ok/2][0])))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;case &#39;&amp;&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforand(list-&gt;wesh[ok],list-&gt;wesh[ok+1],&amp;(abc[ok/2][0])))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp;case &#39;^&#39;:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(checkbitforxor(list-&gt;wesh[ok],list-&gt;wesh[ok+1],&amp;(abc[ok/2][0])))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modified = 1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;}while(modified);
<br>&nbsp;delete[] (char *)list;<br>&nbsp;return ret;<br>}</p>
<p>struct quantparam *qbyte::newlist(qbyte &amp;a,char type)<br>{<br>&nbsp;struct quantparam *abc;<br>&nbsp;abc = (struct quantparam *) new char[PARAM_LIST_SIZE_BASE + (sizeof(struct quantique *)*2)];<br>&nbsp;abc-&gt;size = PARAM_LIST_SIZE_BASE + (sizeof(struct quantique *)*2);
<br>&nbsp;abc-&gt;type = type;<br>&nbsp;abc-&gt;nb = 2;<br>&nbsp;abc-&gt;error = this-&gt;error | a.error;<br>&nbsp;abc-&gt;wesh[0] = &amp;(this-&gt;me);<br>&nbsp;abc-&gt;wesh[1] = &amp;(a.me);<br>&nbsp;return abc;<br>}</p>
<p>struct quantparam *qbyte::addtolist(struct quantparam * list,char type)<br>{<br>&nbsp;struct quantparam *tmp;<br>&nbsp;if(type != list-&gt;type)<br>&nbsp;{<br>&nbsp;&nbsp;cout &lt;&lt;&quot;wesh lascar, on supporte pas trop les melange sur ste version modif ton code&nbsp; la lib fait un exit(0); la:P&quot;&lt;&lt;endl;
<br>&nbsp;&nbsp;exit(0);<br>&nbsp;}<br>&nbsp;tmp = (struct quantparam *) new char[list-&gt;size + sizeof(struct quantique *)];<br>&nbsp;memcpy(tmp,list,list-&gt;size);<br>&nbsp;tmp-&gt;wesh[list-&gt;nb] = &amp;(this-&gt;me);<br>&nbsp;delete[] (char *)list;
<br>&nbsp;tmp-&gt;nb++;<br>&nbsp;return tmp;<br>}</p>
<p>struct quantparam * qbyte::operator + (qbyte &amp;a)<br>{<br>&nbsp;return newlist(a,&#39;+&#39;);<br>}</p>
<p>struct quantparam * qbyte::operator + (struct quantparam * list)<br>{<br>&nbsp;return addtolist(list,&#39;+&#39;);<br>}</p>
<p>bool qbyte::operator = (struct quantparam *list)<br>{<br>&nbsp;return pyramide(list,list-&gt;type);<br>}</p>
<p>bool qbyte::operator = (qbyte &amp;a)<br>{<br>&nbsp;return fusion(a);<br>}</p>
<p>struct quantparam * qbyte::operator | (qbyte &amp;a)<br>{<br>&nbsp;return newlist(a,&#39;|&#39;);<br>}</p>
<p>struct quantparam * qbyte::operator | (struct quantparam * list)<br>{<br>&nbsp;return addtolist(list,&#39;|&#39;);<br>}</p>
<p>struct quantparam * qbyte::operator &amp; (qbyte &amp;a)<br>{<br>&nbsp;return newlist(a,&#39;&amp;&#39;);<br>}</p>
<p>struct quantparam * qbyte::operator &amp; (struct quantparam * list)<br>{<br>&nbsp;return addtolist(list,&#39;&amp;&#39;);<br>}</p>
<p>struct quantparam * qbyte::operator ^ (qbyte &amp;a)<br>{<br>&nbsp;return newlist(a,&#39;^&#39;);<br>}</p>
<p>struct quantparam * qbyte::operator ^ (struct quantparam * list)<br>{<br>&nbsp;return addtolist(list,&#39;^&#39;);<br>}<br>&nbsp;<br>struct quantparam * qbyte::operator * (unsigned int constante)<br>{<br>&nbsp;struct quantparam *abc;
<br>&nbsp;abc = (struct quantparam *) new char[PARAM_LIST_SIZE_BASE + (sizeof(struct quantique *)*2)];<br>&nbsp;abc-&gt;size = PARAM_LIST_SIZE_BASE + (sizeof(struct quantique *)*2);<br>&nbsp;abc-&gt;type = &#39;*&#39;;<br>&nbsp;abc-&gt;nb = 2;
<br>&nbsp;abc-&gt;error = this-&gt;error ;<br>&nbsp;abc-&gt;wesh[0] = &amp;(this-&gt;me);<br>&nbsp;abc-&gt;wesh[1] = (struct quantique *) constante;<br>&nbsp;return abc;<br>}</p>
<p>//profondeur d&#39;erreur ...<br>void qbyte::increment()<br>{<br>&nbsp;if(!enable)<br>&nbsp;&nbsp;return;<br>&nbsp;if(saved)<br>&nbsp;{<br>&nbsp;&nbsp;//redzone++;<br>&nbsp;&nbsp;return ;<br>&nbsp;}<br>&nbsp;if(compteur == ~0x00)<br>&nbsp;&nbsp;compteur2++;<br>&nbsp;compteur++;<br>}</p>

<p>void qbyte::savedepth()<br>{<br>&nbsp;savedepth(0);<br>}</p>
<p>void qbyte::savedepth(bool b)<br>{<br>&nbsp;if(!enable)<br>&nbsp;&nbsp;return;<br>&nbsp;if(saved)<br>&nbsp;{<br>&nbsp;&nbsp;if(b)<br>&nbsp;&nbsp;&nbsp;redzone++;<br>&nbsp;&nbsp;return;<br>&nbsp;}<br>&nbsp;profondeur = compteur;<br>&nbsp;profondeur2 = compteur2;<br>&nbsp;ldepth = compteur;<br>&nbsp;hdepth = compteur2;
<br>&nbsp;saved = 1;<br>&nbsp;redzone = 1;<br>}</p>
<p>bool qbyte::enabledepth()<br>{<br>&nbsp;reinitdepth();<br>&nbsp;if(enable)<br>&nbsp;&nbsp;return 0;<br>&nbsp;enable = 1;<br>&nbsp;return 1;<br>}</p>
<p>bool qbyte::depthisenable()<br>{<br>&nbsp;return enable;<br>}</p>
<p>bool qbyte::disabledepth()<br>{<br>&nbsp;if(!enable)<br>&nbsp;&nbsp;return 0;<br>&nbsp;enable = 0;<br>&nbsp;reinitdepth();<br>&nbsp;return 1;<br>}</p>
<p>void qbyte::reinitdepth()<br>{<br>&nbsp;compteur&nbsp; = 0;<br>&nbsp;compteur2 = 0;<br>&nbsp;profondeur = 0;<br>&nbsp;profondeur2 = 0;<br>&nbsp;ldepth = 0;<br>&nbsp;hdepth = 0;<br>&nbsp;redzone = 0;<br>&nbsp;saved = 0;<br>}</p>
<p>unsigned int qbyte::getldepth()<br>{<br>&nbsp;if(saved)<br>&nbsp;&nbsp;return profondeur;<br>&nbsp;else<br>&nbsp;&nbsp;return compteur;<br>}</p>
<p>unsigned int qbyte::gethdepth()<br>{<br>&nbsp;if(saved)<br>&nbsp;&nbsp;return profondeur2;<br>&nbsp;else<br>&nbsp;&nbsp;return compteur2;<br>}</p>
<p>unsigned int qbyte::getredzone()<br>{<br>&nbsp;return redzone;<br>}</p>
<p>bool qbyte::depthsaved()<br>{<br>&nbsp;return saved;<br>}</p>
<p>bool qbyte::enablecopyerror()<br>{<br>&nbsp;if(copyerror)<br>&nbsp;&nbsp;return 0;<br>&nbsp;copyerror = 1;<br>&nbsp;return 1;<br>}</p>
<p>bool qbyte::disablecopyerror()<br>{<br>&nbsp;if(!copyerror)<br>&nbsp;&nbsp;return 0;<br>&nbsp;copyerror = 0;<br>&nbsp;return 1;<br>}<br></p>