Bits, bytes y señales

Hoy, conceptos muy básicos pero que a lo mejor a alguien le aclaran alguna duda:
  • Un bit= puede tomar el valor 0 ó 1.
  • Un byte=8 bits.
  • Una palabra=depende del sistema, 32 ó 64 bits en los procesadores de PCs.
  • Un número entero en un PC=32 bits.
  • Un número en coma flotante en un PC=32 bits en precisión simple y 64 bits en precisión doble.
Supongamos que tenemos la típica señal que nos indica si una puerta está abierta o cerrada. Esta señal S vale 0 si la puerta está cerrada y 1 si la puerta está abierta. Ahora supongamos que tenemos que supervisar 20 puertas y que tengo señales entre S1 y S20.

Tengo varias opciones:

  • Utilizo una variable entera en el PC para almacenar y gestionar cada señal. Es decir, "gasto" 20 variables en el PC para las 20 puertas. Tengo una variable S1 con el valor 0 ó 1 almacenado en 32 bits, una variable S2 con el valor de la señal S2 y así sucesivamente.
  • Utilizo una única variable entera en el PC para almacenar y gestionar todas las señales juntas. Como sólo necesito 1 bit para cada puerta, si agrupo todas las señales basta con 20 bits. Así sólo tengo una variable Puertas en el PC, cuyo valor obtengo concatenando todos los valores de S1 a S20 y rellenando los 12 bits que sobran con ceros.

¿Cuáles son las ventajas e inconvenientes de estas dos alternativas?. En el primer caso está claro que la implementación es más intuitiva: 1 señal=1 variable. Pero claro, a cambio desaprovechamos muchos recursos, ya que malgastamos 31 de bits de cada variable, nos bastaría sólo con utilizar 1 bit. Y además, si el software que utilizamos nos limita el número de variables que podemos definir o del que podemos almacenar históricos, etc, no estamos siendo muy eficientes, no?.

En la segunda alternativa sólo "gastamos" una variable y aprovechamos mucho más los recursos del PC. Pero a cambio, tenemos que gestionar la codificación y decodificación de la variable que hemos llamado Puertas. Si por ejemplo quiero saber si la puerta 3 está abierta, con la primera alternativa es automático mientras que con la segunda tengo que utilizar un filtro para deducirlo. Así que la programación y el acceso a la informació se complican bastante.


No hay comentarios: