Saltar al contenido

¿De qué son representativos 0x01 y 0x80 en las operaciones bit a bit de C?

Por fin luego de mucho batallar pudimos hallar la solución de este atascamiento que muchos de nuestros lectores de nuestro espacio presentan. Si tienes alguna información que compartir no dudes en dejar tu comentario.

Solución:

0x01 es el conjunto de bits menos significativo, por lo que el valor decimal es 1.

0x80 es el bit más significativo de un conjunto de bytes de 8 bits. Si se almacena en un carácter firmado (en una máquina que usa notación de complemento a 2, como lo harán la mayoría de las máquinas con las que probablemente se encontrará), es el valor más negativo (decimal -128); en un carácter sin signo, es decimal +128.

El otro patrón que se convierte en una segunda naturaleza es 0xFF con todos los bits configurados; esto es decimal -1 para caracteres con signo y 255 para caracteres sin signo. Y, por supuesto, hay 0x00 o cero sin establecer bits.

Lo que hace el bucle en el primer ciclo es verificar si el LSB (bit menos significativo) está establecido y, si lo está, establece el MSB (bit más significativo) en el resultado. En el siguiente ciclo, verifica el siguiente a LSB y establece el siguiente a MSB, etc.

| MSB |     |     |     |     |     |     | LSB |
|  1  |  0  |  1  |  1  |  0  |  0  |  1  |  1  |   Input
|  1  |  1  |  0  |  0  |  1  |  1  |  0  |  1  |   Output
|  1  |  0  |  0  |  0  |  0  |  0  |  0  |  0  |   0x80
|  0  |  0  |  0  |  0  |  0  |  0  |  0  |  1  |   0x01
|  0  |  1  |  0  |  0  |  0  |  0  |  0  |  0  |   (0x80 >> 1)
|  0  |  0  |  0  |  0  |  0  |  0  |  1  |  0  |   (0x01 << 1)

Cada dígito hexadecimal representa 4 bits, por lo que

  • 0x01 es solo una forma larga de escribir 1.
  • 0x80 es una forma corta de escribir en binario [1000][0000]o 128.

La solución es usar operadores bit a bit para probar y establecer valores.

La expresion:

if (a & b)  ... 

ejecuta '...' si el mismo bit es 1 tanto en 'a' como en 'b'.

La expresion

c |= b

establece los bits en 'c' a 1, si son 1 en 'b'.

El ciclo mueve el bit de prueba y configuración hacia abajo en la línea.

¡Buena suerte!

Al final de todo puedes encontrar las explicaciones de otros usuarios, tú asimismo eres capaz dejar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *