Leer / modificar estado de un bit en Basic

Por Warchild

Paragon (1298)

Imagen del Warchild

11-09-2013, 17:48

Buenas, quisiera leer y modificar un bit cualquiera de un byte en Basic. ¿Alguien me puede indicar cómo hacerlo?

Gracias Smile

Login sesión o register para postear comentarios

Por mcleod_ideafix

Rookie (20)

Imagen del mcleod_ideafix

11-09-2013, 19:05

B = posición del bit. Un valor de 0 a 7
N = valor de byte cuyo bit se quiere procesar. Valor de 0 a 255.

Comprobar si el bit B del valor N está a 1:
if (N and (2^B))<>0 then .......

Comprobar si el bit B del valor N está a 0:
if (N and (2^B))=0 then .......

Poner a 1 el bit B del valor N:
N = N or (2^B)

Poner a 0 el bit B del valor N:
N = N and (255-2^B)

Si el valor de B es constante, es mejor precalcular el valor 2^B ya que la potenciación es una operación costosa.
Por ejemplo, poner a 1 el bit 7 de la posición de memoria 40000
POKE 40000,PEEK(40000) OR 128
(128 es 2^7)

Poner a 0 el bit 4 de la posición de memoria 40000
POKE 40000,PEEK(40000) AND 239
(239 sale de hacer 255-2^4)

Si el valor del bit 0 de la posición de memoria 40000 es 1, entonces poner a 0 el bit 7 de esa misma posición:
IF PEEK(40000) AND 1<>0 THEN POKE 40000,PEEK(40000) AND 127

Por Warchild

Paragon (1298)

Imagen del Warchild

12-09-2013, 17:39

Muchas Gracias! Es justo lo que necesitaba Smile