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
Uso de registros a nivel de byte
Moderator: Benj
- Benj
- Matrix Staff
- Posts: 15312
- Joined: Mon Oct 16, 2006 10:48 am
- Location: Matrix TS Ltd
- Has thanked: 4803 times
- Been thanked: 4314 times
- Contact:
Re: Uso de registros a nivel de byte
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
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
Regards Ben Rowland - MatrixTSL
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel
Flowcode Product Page - Flowcode Help Wiki - Flowcode Examples - Flowcode Blog - Flowcode Course - My YouTube Channel