Le circuit ET est le suivant. Il y a les entrées A et B, et le C rouge qui se chevauche est la sortie.
Le circuit OU est le suivant. Il y a les entrées A et B, et la plage C de A et B est la sortie.
Le circuit NAND ressemble à ceci: C'est le déni de ET qui est sorti au début. (PAS ET) Vous pouvez voir que la sortie de C rouge est l'inversion de AND. Ce circuit émet FALSE lorsque A et B sont tous deux VRAI.
Le circuit NOR est le suivant. C'est un déni de OU. (PAS OU)
Le circuit XOR ressemble à ceci: Sortie FALSE lorsque A et B sont tous deux VRAI ou les deux sont FAUX.
Pour trouver le circuit XOR en utilisant NAND, OR, AND, c'est comme suit. La plage de chevauchement (ET) lorsque le NAND jaune et le OU violet se chevauchent est le XOR. (La plage où le jaune et le violet se chevauchent et deviennent blanchâtres)
Implémentons la figure montrée dans la décomposition du circuit XOR ci-dessus en Java.
Main.java
public class Main {
public static void main(String[] args) {
//Sortie circuit XOR
final boolean[][] AB = {
{ true, true },
{ true, false },
{ false, true },
{ false, false }
};
System.out.printf("Sortie circuit XOR\n");
for (int i = 0; i < AB.length; i++) {
boolean b = xor(AB[i][0], AB[i][1]);
System.out.println("(A :" + AB[i][0] + ") + (B :" + AB[i][1] + ") = " + b);
}
}
public static boolean and(boolean a, boolean b) {
if (a && b) {
return true;
}
return false;
}
public static boolean or(boolean a, boolean b) {
if (a || b) {
return true;
}
return false;
}
public static boolean nand(boolean a, boolean b) {
return !and(a, b);
}
public static boolean xor(boolean a, boolean b) {
if (and(nand(a, b), or(a,b))) {
return true;
}
return false;
}
}
//Sortie circuit XOR
//(A :true) + (B :true) = false
//(A :true) + (B :false) = true
//(A :false) + (B :true) = true
//(A :false) + (B :false) = false
Vous pouvez également créer un circuit XOR en modifiant le contenu de la méthode xor utilisée dans le code Java ci-dessus comme suit. Ce qui suit est une sortie en forme de croissant avec le côté droit de a prenant le et de a et nand (a, b) manquant, et un croissant de lune avec le côté gauche de b prenant le et de b et nand (a, b) manquant. Sortie pour que les différentes sorties soient combinées avec ou.
Main.java
public static boolean xor(boolean a, boolean b) {
if (or(and(a, nand(a, b)), and(b, nand(a, b)))) {
return true;
}
return false;
}
Recommended Posts