Page 1 of 1

Uso de registros a nivel de byte

Posted: Thu Jun 13, 2019 9:35 pm
by Fer_taca
Hola Amigos,
me encuentro in una nueva duda que se trata de como manejar a nivel de bits los datos de un registro. Me explico:
Tengo 3 variables tipo bit: var1, var2 y var3. Me gustaría empaquetarlas dentro de un registro llamado estado_variable.
Y de esa forma podría consultar su valor de manera individual a la vez que cada vez que cambie el estado de alguna de ellas poderla guardar de forma también individual.

¿Para guardarlos se puede hacerse de forma que se guarde el valor del primero, se rote hacia la izquierda el bit, se guarde el segundo, se vuelva a rotar y después se guarde el tercero? ¿Se puede guardar directamente, por ejemplo, solo el tercer bit es su lugar correspondiente?

Muchas gracias de antemano

Re: Uso de registros a nivel de byte

Posted: Mon Jun 17, 2019 5:31 pm
by Benj
Hola,

Sí, esto es posible. Digamos que tenemos una variable de byte que queremos poder leer y escribir 8 bits individuales.

Para establecer el bit usaríamos un código como este, bit es un valor entre 0 y 7, es decir, la posición del bit.

Reg = Reg | (1 << bit)

Para borrar el bit usaríamos este código.

Reg = Reg & ~ (1 << bit)

Para leer el bit usaríamos esta nota de código, usaremos el valor del bit dos veces, una vez para cambiar a la posición del bit y otra vez para bajar para tener un valor 0 o 1.

Valor = (Reg & (1 << bit)) >> bit




Hello,

Yes this is possible. Let's say we have a byte variable that we want to be able to read and write 8 individual bits.

To set the bit we would use code like this, bit is a value between 0 and 7 i.e. the bit position.

Reg = Reg | (1 << bit)

To clear the bit we would use this code.

Reg = Reg & ~(1 << bit)

To read the bit we would use this code note we use the bit value twice, once to shift up to the bit position and again to shift down to have a value 0 or 1.

Value = (Reg & (1 << bit)) >> bit

Re: Uso de registros a nivel de byte

Posted: Mon Jun 17, 2019 8:26 pm
by Fer_taca
Muchas gracias por la respuesta Benj.
Voy a tratar de asimilar lo que me has indicado e intentar comprenderlo

Saludos
F.