private string imprimirTelaHexa(string numero, bool hexa)
        {
            Conversor con      = new Conversor();
            string    resposta = null;

            //resultado
            if (hexa)
            {
                return("0x" + con.BinarioParaHexadecimal(con.PontoFlutuanteParaBinario(float.Parse(numero))));
            }
            else
            {
                int num = Convert.ToInt32(numero);
                if (num < 0)
                {
                    num     *= -1;
                    resposta = "-";
                }

                if (num > 255)
                {
                    return(resposta + con.BinarioParaHexadecimal(con.InteiroParaBinario(24, num)));
                }
                else
                {
                    return(resposta + con.BinarioParaHexadecimal(con.InteiroParaBinario(8, num)));
                }
            }
        }
        public void calcularArquivo()
        {
            string path = "operandos.txt";
            string OperandoA, OperandoB;

            //Tabela inteiro
            // F2 F1 F0 Saída
            // 0  0  0  A and B
            // 0  0  1  A or B
            // 0  1  0  Not A
            // 0  1  1  Not B
            // 1  0  0  A + B
            // 1  0  1  A - B
            // 1  1  0    -
            // 1  1  1    -

            try
            {
                if (File.Exists(path))
                {
                    string[]     linha;
                    StreamReader arquivo = new StreamReader(path);          //Stream de leitura do arquivo contendo os operandos

                    StreamWriter arqui = new StreamWriter("resultado.txt"); //Stream de escrita do arquivo com os resultados das operações com os operandos

                    Conversor conv = new Conversor();

                    //escrever novo arquivo
                    for (int pos = 0; !arquivo.EndOfStream; pos++)
                    {
                        linha     = arquivo.ReadLine().Split(';'); //Lê uma linha do arquivo e separa pelo separador ';' no vetor linha
                        OperandoA = linha[0];                      //atribui a primeira posição do vetor linha
                        OperandoB = linha[1];                      ////atribui a segunda posição do vetor linha

                        //Executa os cálculos e salva os resultados no arquivo "resultado.txt"
                        arqui.WriteLine("Operando A: {0}, Operando B: {1}", OperandoA, OperandoB);
                        arqui.WriteLine("\tDECIMAL: ");
                        arqui.Write("AND: ");
                        //0  0  0  A and B
                        arqui.WriteLine((encaminhaULA(decodificadorAnd, OperandoA, OperandoB)));

                        arqui.Write("OR: ");
                        arqui.WriteLine((encaminhaULA(decodificadorOr, OperandoA, OperandoB)));

                        arqui.Write("NOT A: ");
                        arqui.WriteLine((encaminhaULA(decodificadorNotA, OperandoA, OperandoB)));

                        arqui.Write("NOT B: ");
                        arqui.WriteLine((encaminhaULA(decodificadorNotB, OperandoA, OperandoB)));

                        arqui.Write("SOMA: ");
                        arqui.WriteLine((encaminhaULA(decodificadorSoma, OperandoA, OperandoB)));

                        arqui.Write("SUBTRAÇÃO: ");
                        arqui.WriteLine((encaminhaULA(decodificadorSubtracao, OperandoA, OperandoB)));

                        arqui.WriteLine("\tHEXADECIMAL: ");
                        arqui.Write("AND: ");
                        arqui.WriteLine(conv.BinarioParaHexadecimal(conv.PontoFlutuanteParaBinario(encaminhaULA(decodificadorAnd, OperandoA, OperandoB))));

                        arqui.Write("OR: ");
                        arqui.WriteLine(conv.BinarioParaHexadecimal(conv.PontoFlutuanteParaBinario(encaminhaULA(decodificadorOr, OperandoA, OperandoB))));

                        arqui.Write("NOT A: ");
                        arqui.WriteLine(conv.BinarioParaHexadecimal(conv.PontoFlutuanteParaBinario(encaminhaULA(decodificadorNotA, OperandoA, OperandoB))));

                        arqui.Write("NOT B: ");
                        arqui.WriteLine(conv.BinarioParaHexadecimal(conv.PontoFlutuanteParaBinario(encaminhaULA(decodificadorNotB, OperandoA, OperandoB))));

                        arqui.Write("SOMA: ");
                        arqui.WriteLine(conv.BinarioParaHexadecimal(conv.PontoFlutuanteParaBinario(encaminhaULA(decodificadorSoma, OperandoA, OperandoB))));

                        arqui.Write("SUBTRAÇÃO:");
                        arqui.WriteLine(conv.BinarioParaHexadecimal(conv.PontoFlutuanteParaBinario(encaminhaULA(decodificadorSubtracao, OperandoA, OperandoB))));

                        arqui.WriteLine();
                        arqui.WriteLine();
                        arqui.WriteLine();
                    }
                    arqui.Close();
                    arquivo.Close();
                    MessageBox.Show("De acordo com o arquivo operandos.txt foi gerado um novo arquivo com os resultados chamado resultado.txt", "Sucesso", MessageBoxButton.OK, MessageBoxImage.Information);
                }
                else
                {
                    MessageBox.Show("arquivo inexistente");
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Erro: " + e.Message);
            }
        }