Anda di halaman 1dari 3

MANEJO DE LOS BITS.

Como es conocido un Byte es la agrupación de 8 bits respectivamente, cada bit forma parte del sistema de numeración
Binario, es decir de base 2 en otras palabras puede almacenar valores comprendidos entre 0 y 1.

Si bien recordamos que un sistema de numeración se conforma de un conjunto de reglas y principios que permite
expresar o definir un número valido dentro del mismo, podemos afirmar que la mayoría de ellos (Sistemas: binarios,
octanos, decimales hexadecimales, etc..) se pueden representar mediante un polinomio sencillo que nos permitirá
entender su lógica:

Número = N*basen + N*basen-1+ N*basen-2 hasta que base quede elevado a la 0 siempre y cuando no contenga
decimales el "Número"
Donde Número es el valor expresado dentro del sistema, base como su nombre lo indica la base del sistema (si es
binario : 2 , octano: 8, decimal: 10, hexadecimal : 16, etc…) y n la posición que ocupa el digito "N" dentro del Número.

Ejemplos en sistema decimal (base:10):

18598 1*10 4 + 8*10 3 + 5*10 2 + 9*10 1 + 8*10 0

Hemos descompuesto el valor expresado "18598" multiplicándolo por la base del sistema (10) elevada a la posición del
digito en la expresión.

El número 1 se encuentra iniciando la expresión y guarda en su interior 10 000 (Para comprobarlo: si eliminamos el 1 el
resultado será (18598-10 000)) por lo tanto 10 000 es igual a 10 4 (1*104)=10 000 + (8*103)= 8 000…

En el sistema de numeración binario la misma fórmula es aplicable:

10 (número binario) = 1*2 1 + 0*2 0

Lo que indica que 10, en el sistema decimal es igual 2, en realidad en el sistema de numeración binario se puede definir
cualquier número entero mayor o igual a 0, sin embargo la estructura de almacenamiento Byte solo fue diseñada desde
su origen para almacenar hasta 256 porque incluye como máximo 8 bits (28 = 256) (recordemos que se toma en cuenta
el 0 por lo cual 255 equivaldrá a 256) y se escogió este valor como máximo porque es la totalidad de caracteres
disponibles en la tabla ASCII, que incluye todos los caracteres validos dentro de un computador, para comprobar esto
podemos guardar un carácter en un archivo sin formato y como resultado tendremos que siempre ocupará 1 byte, si
colocamos 2 caracteres el tamaño del archivo será igual a 2 bytes. Lo que justifica que 1 byte = 8 bits = puede almacenar
hasta 256. y 1 bit es la mínima unidad en la que se puede almacenar información, Ejemplo: el tipo booleano (bool) ocupa
en memoria 1 bit, por tanto TRUE = 1 FALSE=0.

Por esta razón la mayoría de los hardwares con capacidad de almacenamiento tales como Discos duros, memorias, y
otros dispositivos; su capacidad siempre será divisible entre 2 , al igual que las demás estructuras de almacenamiento (
Kb, Mb, Gb, Tb, etc)

Como refería anteriormente, la tabla ASCII incluye todos los caracteres validos dentro del computador, desde todas las
letras en minúsculas y mayúsculas, números y otros especiales, estos últimos utilizados en su mayoría como
delimitadores o separadores guía dentro de un formato de archivo de contenido binario (PDF, DOC, EXE, DLL, OCX,
ENTRE OTROS) Ejemplo de delimitadores: La dirección IP incluye 4 pares de cuyo valor máximo es 255 para poder
representarlo en decimal se hace más que necesario, obligatorio el uso de delimitadores por lo cual se emplea un ".
(Punto)" de modo tal que 255.255.255.255, para reducir esta información a 4 bytes podremos acudir a la tabla ASCII.

Por ejemplo el carácter "A" dentro de la tabla ASCII en el sistema decimal ocupa 64, podemos ejecutar una función
ampliamente reconocida por lenguajes de programación entre ellos (Delphi, C++, VB, Php, etc) llamada ORD que
producirá como resultado de ord(64) "A" si por el contrario ejecutamos chr('A') es resultado será 64 en decimal, el cual
representado en binario equivaldría a "1000000" , auque 64 no ocupe físicamente los 255 (1 byte completo) su tamaño
en disco siempre será 1 byte, porque la mayoría de sistemas operativos y hardware desde su ensamblaje esta orientados
para reservar un mínimo de espacio en memoria y en disco tomando en cuenta que ese valor puede ser modificado a
255 (máximo) ó 0 (mínimo) en cualquier momento.

Por tanto podemos decir que un bit tiene un valor de acuerdo a su posición ó ubicación y para hallar ese valor solo
tenemos que descomponer 255.
128 62 32 16 8 4 2 1
1 2 3 4 5 6 7 8(bits)

1
Como comentábamos anteriormente el bit se conforma de 0 y 1 respectivamente por tanto afirmaremos a partir de ahora
que 0 ES IGUAL A FALSO (false) Y 1 ES IGUAL A VERDADERO (true) si tenemos un conjunto de 8 bits lo sumaremos
según su posición, siempre y cuando el bit sea VERDADERO es decir su contenido sea igual a 1, ejemplo: dado los bits
"10111011" para convertirlo a decimal aplicamos la tabla:

128 62 32 16 8 4 2 1
1 0 1 1 1 01 1

Y posteriormente sumamos solo los valores que son "VERDADEROS" entonces: 128+32+16+8+2+1=187,
10111011=187, entonces podemos decir que para almacenar 256 necesitaremos que los 8 bits sean verdaderos es decir
8 bits y ya tendemos nuestro byte.

Para hacer el proceso contrario es decir de decimales a binario, solo tenemos que descomponer el decimal dividiéndolo
siempre entre 2 hasta que el valor sea igual a 1, la agrupación de los residuos obtenidos será nuestro valor binario;
obviamente los residuos siempre serán (0 ó 1).

Los bits son ampliamente utilizados para codificar datos, comprimir información, etc. Por ejemplo el formato de imágenes
diseñado por Microsoft (.BMP) calcula el área de la imagen es decir base por altura ó lo que es igual a ancho por alto la
cual asume como la cantidad de puntos disponibles, estos puntos a su vez almacenan un color hexadecimal de 3 pares
conocido como RGB que almacena los colores ROJOS, VERDE Y AZUL, por lo cual para el almacenamiento del color
emplea 3 bytes (255,255,255) y los escribe con ASCII , por cada punto , lo que indica si una imagen es de 10 px x 10 px
empleará 300 bytes para almacenar los puntos y otros adicionales que guardan información de propiedades y
características de esencial importancia. Utilizando bytes delimitadores o separadores en caso de no conocer el final del
valor, es decir si la cantidad de bytes a emplear por la cabecera del formato (que contiene información) se desconoce ó
puede variar dependiendo de factores, se hace indispensable el uso de delimitadores (ASCII DEFINIDOS COMO
DELIMITADORES), si por el contrario siempre se situará entre los bytes 10 y 20 por ejemplo (no será necesario). Por tal
motivo cuando leemos un archivo (con un programa desarrollado por nosotros) debemos especificar cuantos bytes
leeremos por cada secuencia, en el caso de los colores del formato (BMP) bastara con leer de 3 en 3, cabe destacar que
un archivo se puede leer hasta 1024 es decir 1 KB de secuencia que equivale a una línea de información, a partir de esa
base se han diseñado mecanismos de comprensión que agrupa los bits repetido en matrices o arrays.

Para hacer posible este manejo existen algunos operadores similares a los de lógica ( OR, AND, NOT, XOR, ETC…)
mejor conocidos como operadores bit a bit.

Desplazando bits:

Podemos definirlo como la acción de transportar bytes de un extremo de la expresión a otro, como la expresión está
conformada por 2 solo puede hacerse en dos sentidos, izquierda y derecha.

a. Desplazando bits a la izquierda (<<)


Consiste en mover la cantidad de bit indicada en la expresión, de la izquierda a la derecha, esta operación equivale a
multiplicar por 2.

Por ejemplo:
16 <<2 desplazaremos 2 bits de la izquierda a la derecha
16 en binario equivale a 00010000 por lo cual moveremos los dos primeros bits a la parte de atrás del número
(derecha) de tal modo que quedará 01000000 lo cual equivale a 64.

Por tanto si multiplicamos


(16*2)=32 (32*2)=64
1 bit 2 bits

b. Desplazando bits a la derecha (>>)


Consiste en mover la cantidad de bit indicada en la expresión, de la derecha a la izquierda, esta operación equivale a
dividir por 2.

Por ejemplo:

128 >>4 desplazaremos 4 bits de la derecha a la izquierda.

2
128 en binario es igual a: 10000000, moveremos los últimos 4 bits a la parte inicial ( de derecha a izquierda) , el
resultado será 00001000 cuyo valor es igual a 8

por tanto si dividimos


(128 / 2)=64 (64/2)=32 (32/2)=16 (16/2)=8
1 bit 2 bits 3 bits 4 bits

Se emplea 2 por ser la base del sistema de numeración binario.

Operador de lógica OR |

Recordemos que llamaremos 0 en binario False y 1 True, entonces el operador OR

Evaluará las expresiones y producirá TRUE es decir 1 solo si el uno de los 2 bits a comparar es igual a 1. Ejemplo:

Expresión: 5 | 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado: 00001101 = 13

Solo si un par de los bits a comparar es 1 el resultado será 1, se comporta exactamente igual a una condición: (true ||
false) es igual a true; (false || false) es igual a false, su razón se debe a que la condición de dos o más argumentos se
transforma siempre a binarios para realizar la comparación utilizando el procesador y la memoria de computador.

Operador de lógica AND &

Solo si el par de bits a comparar es igual a 1 el resultado será 1.

Expresión: 5 & 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado : 00000100 = 4

Es similar a (TRUE && TRUE) es igual a true, (False && True) es igual a false.

Operador XOR ^

Solo si el par de bits a comparar es diferente será igual a 1.


Expresión: 5 ^ 12
5 en binario es igual a 00000101
12 en binario = 00001100
Resultado : 00001001 = 9

Similar a (TRUE XOR FALSE) es igual a true, ( TRUE XOR TRUE) es igual a false.

Operador Not ~

Solo si el bit a comparar es igual a 0 (False) será igual a 1.


Expresión: ~5
5 en binario es igual a 00000101
Resultado : 00000010 = 2

Similar a (!FALSE) es igual a true

Anda mungkin juga menyukai