Salut, Je vais essayer. Cette fonction s'appelle Boole parce qu'elle utilise l'algèbre de Boole (aussi appelée calcul Booléen ou logique Booléenne). Ici cette logique est appliquée à des comparaisons "bit à bit" sur des entiers représentant des codes binaires. Pour reprendre l'exemple cité : (Boole 6 6 5) Le premier 6 représente l'opérateur, soit la somme des bits opérateur 2 et 4. 6 et 5 sont codes binaires à comparer "bit à bit":
6 correspond à la valeur binaire : 1 1 0, autrement dit : 4 + 2 + 0
5 correspond à la valeur binaire : 1 0 1, autrement dit : 4 + 0 + 1
Avec le bit opérateur 1 (AND), il faut que les deux bits comparés soient "vrais" (différents de 0). Seul 4 est à la fois présent dans 6 et 5, donc : (Boole 1 6 5) ; retourne 4 comme (logand 6 5) Avec le bit opérateur 2, il faut que le premier bit soit "vrai" (différent de 0) et le second "faux" (égal à 0). Seul 2 est "vrai" dant le premier entier et faux dans le second. (Boole 2 6 5) ; retourne 2 Avec le bit opérateur 4, il faut que le premier bit soit "faux" (égal à 0) et le second "vrai" (différent de 0). Seul 1 est "vrai" dant le second entier et faux dans le premier. (Boole 4 6 5) ; retourne 1 Avec l'opérateur 6 (XOR), soit 4 + 2, il faut, soit que le premier soit "vrai" et le second "faux" (bit opérateur 2) ; soit l'inverse (bit opérateur 4). On a donc 2 et 1. (Boole 6 6 5) ; retourne 3 (autrement dit 2 + 1) Avec l'opérateur 1 + 2 + 4 = 7 (OR), il faut soit que les deux bits soient "vrais" (comme 4) ; soit que le premier soit "vrai" et le second "faux" (comme 2) ; soit que premier soit "faux" et le second "vrai" (comme 1) : (Boole 7 6 5) ; retourne 7 (4 + 2 + 1) comme (logior 6 5)