Ejemplo en Teorico de Memorias ROM

Re: Ejemplo en Teorico de Memorias ROM

de Gustavo Brown -
Número de respuestas: 0

Sobre tu primer punto, es correcto. La condición de parada del for debería ser j < 10.

Sobre tu segundo punto, queda definir si una palabra con 5 unos (y por lo tanto 5 ceros) tiene mayoría 1 o mayoría 0.

El caso del ejemplo supone que con 5 unos la mayoría es 1.

El programa quedaría entonces:

int rom[1024];

void genero_rom()
 { 
     int i, j, aux, unos; 
     for (i = 0; i < 1024; i++)
     {
       unos = 0;
       aux = i;
       for (j = 0; j < 10; j++) 
      {
           if (aux % 2 == 1)
               unos++;
           aux = aux / 2;
      }
      if (unos > 4)  // Aqui podría ser 5 si suponemos que una palabra con 5 unos tiene mayoría 0
          rom[i] = 1;
      else rom[i] = 0;
 }

Este programa se puede reescribir más compacto utilizando corrimientos y máscaras

int rom[1024];

void genero_rom()
 { 
     int i, j, unos; 
     for (i = 0; i < 1024; i++) 
     {
       unos = 0;        
       for (j = i; j > 0; j >>= 1
      { 
           if (j & 1)
               unos++; 
      } 
      if (unos > 4)  // Aqui podría ser 5 si suponemos que una palabra con 5 unos tiene mayoría 0
          rom[i] = 1; 
      else rom[i] = 0; 
 }


Saludos,
   Gustavo