Extraer bits

Re: Extrar bits

de Federico Rivero -
Número de respuestas: 0
Marcelo:

El tema es el tamaño de las variables. Supuse (por el nombre) que byte_alto es una variable de 8 bits. La operación '2bytes & 0xFF00', da como resultado 2 bytes, donde el primero es el byte alto de la variable '2bytes' y el segundo es 0. Si se le asignan esos 16 bits a una variable de 8 bits, se trunca el valor de la variable de 16 bits, asignando los 8 bits menos significativos.

Con respecto a tu segunda pregunta, no es lo mismo. El segundo caso devuelve el resultado incorrecto, ya que se setean los 8 bits más significativos en 0, y luego se corren, asignando a la variable 'byte_alto' el valor cero.

Un detalle más, en el primer caso, el and binario es irrelevante. Es decir, esto:

byte_alto = 2bytes >> 8

Ya devuelve el valor correcto :).

Saludos,
Federico