Return to Snippet

Revision: 10251
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++