1 package era.mi.logic;
\r
3 import java.util.Arrays;
\r
9 public static Bit and(Bit a, Bit b)
\r
14 public Bit and(Bit other)
\r
16 if (equals(Bit.ZERO) || other.equals(Bit.ZERO))
\r
18 else if (equals(other) && equals(Bit.ONE))
\r
24 public static Bit or(Bit a, Bit b)
\r
29 public Bit or(Bit other)
\r
31 if (equals(Bit.ONE) || other.equals(Bit.ONE))
\r
33 else if (equals(other) && equals(Bit.ZERO))
\r
39 public static Bit xor(Bit a, Bit b)
\r
44 public Bit xor(Bit other)
\r
46 if(this == Bit.X || this == Bit.Z
\r
47 || other == Bit.X || other == Bit.Z)
\r
50 return this == other ? Bit.ZERO : Bit.ONE;
\r
66 public Bit[] makeArray(int length)
\r
68 Bit[] bits = new Bit[length];
\r
69 Arrays.fill(bits, this);
\r
74 * Rules for two bits that get directly connected<br>
\r
77 * <tr><td><td>X<td>0<td>1<td>Z</tr>
\r
78 * <tr><td>X<td>X<td>X<td>X<td>X</tr>
\r
79 * <tr><td>0<td>X<td>0<td>X<td>0</tr>
\r
80 * <tr><td>1<td>X<td>X<td>1<td>1</tr>
\r
81 * <tr><td>Z<td>X<td>0<td>1<td>Z</tr>
\r
85 * @return the result according to the table
\r
87 * @author Christian Femers
\r
89 public Bit combineWith(Bit other)
\r
93 if (this == X || other == X)
\r
102 public static Bit combine(Bit a, Bit b)
\r
104 return a.combineWith(b);
\r