Пример #1
0
        public override bool TestGate()
        {
            Input1.SetValue(7);
            Input2.SetValue(7);

            if (Output.Get2sComplement() != 14)
            {
                return(false);
            }

            Input1.Set2sComplement(6);
            Input2.Set2sComplement(-6);


            if (Output.Get2sComplement() != 0)
            {
                return(false);
            }

            Input1.Set2sComplement(6);
            Input2.Set2sComplement(-1);


            if (Output.Get2sComplement() != 5)
            {
                return(false);
            }

            return(true);
        }
Пример #2
0
        public override bool TestGate()
        {
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 0;
            NotOutput.Value = 1;
            Console.WriteLine("Case 1: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 0;
            NotOutput.Value = 0;
            Console.WriteLine("Case 2: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            InputX.SetValue(6);
            InputY.SetValue(5);

            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 0;
            NotOutput.Value = 1;
            if (Output.Get2sComplement() != -7 || Zero.Value != 0 || Negative.Value != 1)
            {
                return(false);
            }

            ZeroX.Value     = 1;
            ZeroY.Value     = 1;
            NotX.Value      = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            if (Output.Get2sComplement() != 0 || Zero.Value != 1 || Negative.Value != 0)
            {
                return(false);
            }

            return(true);
        }
Пример #3
0
 public override bool TestGate()
 {
     Input.Set2sComplement(5);
     Load.Value = 1;
     Clock.ClockDown();
     Clock.ClockUp();
     if (Output.Get2sComplement() != 5)
     {
         return(false);
     }
     return(true);
 }
Пример #4
0
        public override bool TestGate()
        {
            Input.Set2sComplement(22);
            Address.Set2sComplement(4);
            Load.Value = 1;
            Clock.ClockDown();
            Clock.ClockUp();
            Load.Value = 0;
            if (Output.Get2sComplement() != 22)
            {
                return(false);
            }
            Input.Set2sComplement(11);
            Clock.ClockDown();
            Clock.ClockUp();
            if (Output.Get2sComplement() != 22)
            {
                return(false);
            }
            Load.Value = 1;
            Clock.ClockDown();
            Clock.ClockUp();
            if (Output.Get2sComplement() != 11)
            {
                return(false);
            }

            Load.Value = 0;
            Address.SetValue(7);
            Clock.ClockDown();
            Clock.ClockUp();
            if (Output.Get2sComplement() != 0)
            {
                return(false);
            }
            Load.Value = 1;
            if (Output.Get2sComplement() != 0)
            {
                return(false);
            }
            Clock.ClockDown();
            Clock.ClockUp();
            if (Output.Get2sComplement() != 11)
            {
                return(false);
            }

            return(true);
        }
Пример #5
0
        public override bool TestGate()
        {
            Random  rand     = new Random();
            WireSet randWire = new WireSet(Size);
            WireSet maxWire  = new WireSet(Size);

            maxWire.Set2sComplement((int)Math.Pow(2, Size - 1) - 1);

            for (int i = 0; i < 1000; i++)
            {
                int num = (int)rand.Next(-(int)Math.Pow(2, Size - 1), ((int)Math.Pow(2, Size - 1) - 1));
                randWire.Set2sComplement(num);

                Input.Set2sComplement(randWire.Get2sComplement());
                Load.Value = 1;

                Clock.ClockDown();
                Clock.ClockUp();

                Load.Value = 0;
                Input.Set2sComplement(maxWire.Get2sComplement());
                if (randWire.Get2sComplement() != Output.Get2sComplement())
                {
                    return(false);
                }

                Clock.ClockDown();
                Clock.ClockUp();

                if (randWire.Get2sComplement() != Output.Get2sComplement())
                {
                    return(false);
                }

                Load.Value = 1;

                Clock.ClockDown();
                Clock.ClockUp();

                if (Input.Get2sComplement() != Output.Get2sComplement())
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #6
0
        public override bool TestGate()
        {
            int bits = Size - 1;

            for (int i = 0; i < 10; i++)
            {
                Random  rand = new Random();
                int     num1 = rand.Next((-(int)Math.Pow(2, bits - 1)), ((int)Math.Pow(2, bits - 1) - 1) + 1);
                int     num2 = rand.Next((-(int)Math.Pow(2, bits - 1)), ((int)Math.Pow(2, bits - 1) - 1) + 1);
                WireSet sum  = new WireSet(Size);
                sum.Set2sComplement(num1 + num2);
                Input1.Set2sComplement(num1);
                Input2.Set2sComplement(num2);
                if (Output.Get2sComplement() != sum.Get2sComplement())
                {
                    return(false);
                }
            }
            return(true);
        }
Пример #7
0
 public override string ToString()
 {
     return(Input1 + "(" + Input1.Get2sComplement() + ")" + " + " + Input2 + "(" + Input2.Get2sComplement() + ")" + " = " + Output + "(" + Output.Get2sComplement() + ")");
 }
Пример #8
0
        public override bool TestGate()
        {
            Console.WriteLine("TESTING FOR X=5, Y=3");
            //1
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            Console.WriteLine("Case 1: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");
            //2
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            Console.WriteLine("Case 2: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //3
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 1;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            Console.WriteLine("Case 3: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //4
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 0;
            NotOutput.Value = 0;
            Console.WriteLine("Case 4: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //5
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 0;
            NotOutput.Value = 0;
            Console.WriteLine("Case 5: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //6
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 0;
            NotOutput.Value = 1;
            Console.WriteLine("Case 6: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //7
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 0;
            NotOutput.Value = 1;
            Console.WriteLine("Case 7: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //8
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            Console.WriteLine("Case 8: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //9
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 1;
            Console.WriteLine("Case 9: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //10
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 1;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            Console.WriteLine("Case 10: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //11
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            Console.WriteLine("Case 11: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //12
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 0;
            Console.WriteLine("Case 12: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //13
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            Console.WriteLine("Case 13: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //14
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            Console.WriteLine("Case 14: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //15
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 1;
            Console.WriteLine("Case 15: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //16
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 0;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            Console.WriteLine("Case 16: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //17
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 0;
            NotOutput.Value = 0;
            Console.WriteLine("Case 17: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            //18
            InputX.Set2sComplement(5);
            InputY.Set2sComplement(5);
            ZeroX.Value     = 0;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 1;
            F.Value         = 0;
            NotOutput.Value = 1;
            Console.WriteLine("Case 18: " + Output.Get2sComplement());
            Console.WriteLine("Negative?: " + Negative.Value);
            Console.WriteLine("Zero?: " + Zero.Value);
            Console.WriteLine("");

            return(true);
            //    throw new NotImplementedException();
        }
Пример #9
0
        public override bool TestGate()
        {
            InputX.SetValue(6);
            InputY.SetValue(5);
            //setting ALU bit settings
            ZeroX.Value     = 1;
            ZeroY.Value     = 1;
            NotX.Value      = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            //
            if (Output.Get2sComplement() != 0 || Zero.Value != 1 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 1;
            ZeroY.Value     = 1;
            NotX.Value      = 1;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != 1 || Zero.Value != 0 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 1;
            ZeroY.Value     = 1;
            NotX.Value      = 1;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            //
            if (Output.Get2sComplement() != -1 || Zero.Value != 0 || Negative.Value != 1)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 0;
            ZeroY.Value     = 1;
            NotX.Value      = 0;
            NotY.Value      = 1;
            F.Value         = 0;
            NotOutput.Value = 0;
            //
            if (Output.Get2sComplement() != 6 || Zero.Value != 0 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 0;
            NotOutput.Value = 0;
            //
            if (Output.Get2sComplement() != 5 || Zero.Value != 0 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 0;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != -7 || Zero.Value != 0 || Negative.Value != 1)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 0;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != -6 || Zero.Value != 0 || Negative.Value != 1)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != -6 || Zero.Value != 0 || Negative.Value != 1)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != -5 || Zero.Value != 0 || Negative.Value != 1)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 0;
            NotX.Value      = 1;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != 7 || Zero.Value != 0 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != 6 || Zero.Value != 0 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 1;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 0;
            //
            if (Output.Get2sComplement() != 5 || Zero.Value != 0 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 1;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            //
            if (Output.Get2sComplement() != 4 || Zero.Value != 0 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 0;
            //
            if (Output.Get2sComplement() != -5 || Zero.Value != 0 || Negative.Value != 1)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 0;
            NotX.Value      = 1;
            ZeroY.Value     = 0;
            NotY.Value      = 0;
            F.Value         = 1;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != 1 || Zero.Value != 0 || Negative.Value != 0)
            {
                return(false);
            }

            //setting ALU bit settings
            ZeroX.Value     = 0;
            NotX.Value      = 0;
            ZeroY.Value     = 0;
            NotY.Value      = 1;
            F.Value         = 1;
            NotOutput.Value = 1;
            //
            if (Output.Get2sComplement() != -1 || Zero.Value != 0 || Negative.Value != 1)
            {
                return(false);
            }

            return(true);
        }
Пример #10
0
        public override bool TestGate()
        {
            Random  rand       = new Random();
            WireSet randInWire = new WireSet(WordSize);

            for (int i = 0; i < m_rMultiBit.Length; i++)
            {
                randInWire.Set2sComplement((int)rand.Next(-(int)Math.Pow(2, WordSize - 1), ((int)Math.Pow(2, WordSize - 1) - 1))); //generate random valid input
                Input.Set2sComplement(randInWire.Get2sComplement());                                                               // connect input to randomized wire
                Address.Set2sComplement((int)rand.Next(0, (int)Math.Pow(2, AddressSize) + 1));                                     //generate random valid address
                Load.Value = 1;

                Clock.ClockDown();
                Clock.ClockUp();

                Load.Value = 0;
                int tempChange = randInWire.Get2sComplement();
                if (tempChange < 0)
                {
                    tempChange++;
                }
                else
                {
                    tempChange--;
                }
                Input.Set2sComplement(tempChange);
                if (Output.Get2sComplement() != randInWire.Get2sComplement())
                {
                    return(false);
                }

                Clock.ClockDown();
                Clock.ClockUp();
                if (Output.Get2sComplement() != randInWire.Get2sComplement())
                {
                    return(false);
                }

                Load.Value = 1;
                Clock.ClockDown();
                Clock.ClockUp();
                if (Output.Get2sComplement() != Input.Get2sComplement())
                {
                    return(false);
                }

                tempChange = Address.Get2sComplement();
                if (tempChange != 0)
                {
                    tempChange--;
                }
                else
                {
                    tempChange++;
                }
                Address.Set2sComplement(tempChange);
                Clock.ClockDown();
                Clock.ClockUp();
                if (Output.Get2sComplement() != Input.Get2sComplement())
                {
                    return(false);
                }
            }

            return(true);
        }
Пример #11
0
        public override bool TestGate()
        {
            int[] arrZX = new int[] { 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0 };
            int[] arrNX = new int[] { 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1 };
            int[] arrZY = new int[] { 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 };
            int[] arrNY = new int[] { 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1 };
            int[] arrF  = new int[] { 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0 };
            int[] arrNO = new int[] { 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1 };

            InputX = new WireSet(Size);
            InputY = new WireSet(Size);
            Random rand = new Random();

            WireSet[] answer = new WireSet[arrZX.Length];
            for (int i = 0; i < answer.Length; i++)
            {
                answer[i] = new WireSet(Size);
            }
            answer[0].Set2sComplement(0);
            answer[1].Set2sComplement(1);
            answer[2].Set2sComplement(-1);

            for (int i = 0; i < arrZX.Length; i++)
            {
                int num1 = rand.Next((-(int)Math.Pow(2, Size - 1)), ((int)Math.Pow(2, Size - 1) - 1) + 1);
                int num2 = rand.Next((-(int)Math.Pow(2, Size - 1)), ((int)Math.Pow(2, Size - 1) - 1) + 1);
                InputX.Set2sComplement(num1);
                InputY.Set2sComplement(num2);

                ZeroX.Value     = arrZX[i];
                NotX.Value      = arrNX[i];
                ZeroY.Value     = arrZY[i];
                NotY.Value      = arrNY[i];
                F.Value         = arrF[i];
                NotOutput.Value = arrNO[i];

                if (Negative.Value != Output[Size - 1].Value)
                {
                    return(false);
                }
                if (Output.Get2sComplement() == 0 && Zero.Value != 1)
                {
                    return(false);
                }
                if (Output.Get2sComplement() != 0 && Zero.Value != 0)
                {
                    return(false);
                }


                answer[3].Set2sComplement(num1);
                answer[4].Set2sComplement(num2);
                BitwiseNotGate tempGX = new BitwiseNotGate(Size);
                tempGX.ConnectInput(InputX);
                answer[5].ConnectInput(tempGX.Output);
                BitwiseNotGate tempGY = new BitwiseNotGate(Size);
                tempGY.ConnectInput(InputY);
                answer[6].ConnectInput(tempGY.Output);
                answer[7].Set2sComplement(-num1);
                answer[8].Set2sComplement(-num2);
                answer[9].Set2sComplement(num1 + 1);
                answer[10].Set2sComplement(num2 + 1);
                answer[11].Set2sComplement(num1 - 1);
                answer[12].Set2sComplement(num2 - 1);
                answer[13].Set2sComplement(num1 + num2);
                answer[14].Set2sComplement(num1 - num2);
                answer[15].Set2sComplement(num2 - num1);
                BitwiseAndGate tempGAnd = new BitwiseAndGate(Size);
                tempGAnd.ConnectInput1(InputX);
                tempGAnd.ConnectInput2(InputY);
                answer[16].ConnectInput(tempGAnd.Output);
                answer[17].ConnectInput(Output);

                for (int j = 0; j < Size; j++)
                {
                    if (answer[i][j].Value != Output[j].Value)
                    {
                        return(false);
                    }
                }
            }
            return(true);
        }