Programa de Memoria Asociativa Cache


/ Published in: C++
Save to your folder(s)



Copy this code and paste it in your HTML
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <iostream.h>
  5. #include <math.h>
  6.  
  7.  
  8. int binarioaentero(int nbinario[]);
  9. void enteroabinario(int decimal,int ver);
  10. int cacheasignado(int decimal);
  11.  
  12. int main()
  13. {
  14.  
  15. int nbinario[8],decimal;
  16.  
  17. printf("Digite un numero binario de 8bits: ");
  18. scanf("%d",&nbinario);
  19.  
  20. decimal=binarioaentero(nbinario);
  21.  
  22.  
  23.  
  24. printf("Dir. Ref. Decimal\t");
  25. printf("Dir. Ref. Binaria\t");
  26. printf("Bloque de Cache Asignado\n");
  27. printf("\t%i\t\t",decimal);
  28. enteroabinario(decimal,0);
  29. printf("\t\t\t");
  30. enteroabinario(cacheasignado(decimal),0);
  31. printf("\n\n");
  32. printf("Indice\t\t");
  33. printf("V\t\t");
  34. printf("Etiqueta\t\t");
  35. printf("Datos\n");
  36. enteroabinario(cacheasignado(decimal),0);
  37. printf("\t\tY");
  38. printf("\t\t");
  39. enteroabinario(decimal,1);
  40. printf("\t\t\t");
  41. enteroabinario(decimal,2);
  42. return 0;
  43.  
  44. }
  45.  
  46.  
  47. int binarioaentero(int nbinario[]){
  48.  
  49. int i=0;
  50. int dec=0;
  51. int p=0;
  52. int binario=*nbinario;
  53.  
  54. while(binario>0){
  55.  
  56. i=binario%10;
  57. dec+=i*(int)pow(i*2,p++);
  58. binario /=10;
  59.  
  60. }
  61. return dec;
  62. }
  63.  
  64. void enteroabinario(int decimal,int ver){
  65.  
  66. int i,binario[5];
  67.  
  68. for(i=0;i<5;i++){
  69. binario[i]=0;
  70. }
  71. int lleva,cont=5;
  72. while(decimal!=0){
  73. lleva=decimal%2;
  74. //printf("%d",lleva);
  75. cont--;
  76. binario[cont]=lleva;
  77. decimal=decimal/2;
  78.  
  79.  
  80. }
  81.  
  82.  
  83. switch(ver){
  84. case 0:
  85. for(i=0;i<5;i++)
  86. printf("%d",binario[i]);
  87. break;
  88. case 1:
  89. for(i=0;i<2;i++)
  90. printf("%d",binario[i]);
  91. break;
  92. case 2:
  93. for(i=2;i<5;i++)
  94. printf("%d",binario[i]);
  95. break;
  96.  
  97. }
  98.  
  99.  
  100.  
  101. }
  102.  
  103. int cacheasignado(int decimal){
  104.  
  105. int i,cont=0,asignado=0;
  106. for(i=3;i<32;i+=4){
  107.  
  108. if(decimal<=i){
  109. asignado=cont;
  110. i=33;
  111. }
  112. cont++;
  113.  
  114. }
  115. return asignado;
  116.  
  117. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.