X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=era.mi%2Fsrc%2Fera%2Fmi%2Flogic%2FBit.java;h=804ecc94824a6b74c04aac8bee6a0b1fc4abce8f;hb=7f37c7b2431309e49a0ee116d1ee6c173272e926;hp=e7c93968da7e958b886340067af22d54894d70cf;hpb=830af2a47f501b4d31f68663b609d225eae603cd;p=Mograsim.git diff --git a/era.mi/src/era/mi/logic/Bit.java b/era.mi/src/era/mi/logic/Bit.java index e7c93968..804ecc94 100644 --- a/era.mi/src/era/mi/logic/Bit.java +++ b/era.mi/src/era/mi/logic/Bit.java @@ -1,5 +1,7 @@ package era.mi.logic; +import java.util.Arrays; + public enum Bit { ONE, ZERO, Z, X; @@ -41,9 +43,11 @@ public enum Bit public Bit xor(Bit other) { - // I'm uncertain how this should behave for cases where one value is neither 1 nor 0. - // TODO: Implement xor - return Bit.X; + if(this == Bit.X || this == Bit.Z + || other == Bit.X || other == Bit.Z) + return Bit.X; + else + return this == other ? Bit.ZERO : Bit.ONE; } public Bit not() @@ -58,6 +62,13 @@ public enum Bit return Bit.X; } } + + public Bit[] makeArray(int length) + { + Bit[] bits = new Bit[length]; + Arrays.fill(bits, this); + return bits; + } /** * Rules for two bits that get directly connected