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); } }