Revision: 10251
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 14, 2008 15:25 by bedomax
Initial Code
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iostream.h>
#include <math.h>
int binarioaentero(int nbinario[]);
void enteroabinario(int decimal,int ver);
int cacheasignado(int decimal);
int main()
{
int nbinario[8],decimal;
printf("Digite un numero binario de 8bits: ");
scanf("%d",&nbinario);
decimal=binarioaentero(nbinario);
printf("Dir. Ref. Decimal\t");
printf("Dir. Ref. Binaria\t");
printf("Bloque de Cache Asignado\n");
printf("\t%i\t\t",decimal);
enteroabinario(decimal,0);
printf("\t\t\t");
enteroabinario(cacheasignado(decimal),0);
printf("\n\n");
printf("Indice\t\t");
printf("V\t\t");
printf("Etiqueta\t\t");
printf("Datos\n");
enteroabinario(cacheasignado(decimal),0);
printf("\t\tY");
printf("\t\t");
enteroabinario(decimal,1);
printf("\t\t\t");
enteroabinario(decimal,2);
return 0;
}
int binarioaentero(int nbinario[]){
int i=0;
int dec=0;
int p=0;
int binario=*nbinario;
while(binario>0){
i=binario%10;
dec+=i*(int)pow(i*2,p++);
binario /=10;
}
return dec;
}
void enteroabinario(int decimal,int ver){
int i,binario[5];
for(i=0;i<5;i++){
binario[i]=0;
}
int lleva,cont=5;
while(decimal!=0){
lleva=decimal%2;
//printf("%d",lleva);
cont--;
binario[cont]=lleva;
decimal=decimal/2;
}
switch(ver){
case 0:
for(i=0;i<5;i++)
printf("%d",binario[i]);
break;
case 1:
for(i=0;i<2;i++)
printf("%d",binario[i]);
break;
case 2:
for(i=2;i<5;i++)
printf("%d",binario[i]);
break;
}
}
int cacheasignado(int decimal){
int i,cont=0,asignado=0;
for(i=3;i<32;i+=4){
if(decimal<=i){
asignado=cont;
i=33;
}
cont++;
}
return asignado;
}
Initial URL
Initial Description
Initial Title
Programa de Memoria Asociativa Cache
Initial Tags
Initial Language
C++