-1
Save it guys. I’m building a C++ cache simulator for a college job. While I was building and testing the code, I came across this mistake. The idea was for the user to set the number of addresses of the main memory and the code to convert from decimal to binary and print, but it prints together what I believe to be memory junk, with each run the numbers after the binaries get random. I don’t know how to solve it. If someone gives me a light thank you
#include <iostream>
#include <cmath>
using namespace std;
int DecToBin(int n){
// array para armazenar o binário
int binaryNum[32];
int i = 0;
while (n > 0){
//armazenando os restos das divisões da conversão
binaryNum[i] = n % 2;
n = n / 2;
i++;
}
// imprimindo a array em ordem inversa
for (int j = i - 1; j >= 0; j--){
cout << binaryNum[j];
}
}
int main(){
int Qtd_enderecos = 0;
int Qtd_bits = 0;
//int mem_principal[Qtd_enderecos];
//int mem_cache[Qtd_bits];
cout << "Nota: os tamanhos devem ser em base 2;\n2, 4, 8, 16, 32..." << endl;
cout << "Insira o tamanho da memoria principal: ";
cin >> Qtd_enderecos;
Qtd_bits = log2(Qtd_enderecos);
cout <<"\n\n";
cout << "Memória principal de " << Qtd_enderecos << " endereços" << endl;
cout << "Memória cache de " << Qtd_bits << " endereços" << endl;
cout << endl;
// construção da array e memórias
for (int a = 1; a <= Qtd_enderecos; a++){
cout << "Posição " << a << " em binário: " << DecToBin(a) << endl;
}
return 0;
}
The output gets:
Nota: os tamanhos devem ser em base 2;
2, 4, 8, 16, 32...
Insira o tamanho da memoria principal: 8
Memória principal de 8 endereços
Memória cache de 3 endereços
Posição 1 em binário: 1-1970048960
Posição 2 em binário: 10-1970048960
Posição 3 em binário: 11-1970048960
Posição 4 em binário: 100-1970048960
Posição 5 em binário: 101-1970048960
Posição 6 em binário: 110-1970048960
Posição 7 em binário: 111-1970048960
Posição 8 em binário: 1000-1970048960