Manejando Bits
Un Byte es la agrupación de 8 bits respectivamente, cada bit forma parte del sistema de numeración Binario a quien debe su nombre, 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…
Sistema de numeración binario
La misma formula 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 | 7 | bits |
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 | 0 | 1 | 1 |
Y posteriormente sumamos solo los valores que son “VERDADEROS” entonces: 128+32+16+8+2+1=187 ¡Enhorabuena 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 esta 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 numero (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.
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
Evaluara 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
Importancia del manejo de los bits
Como programador daré una opinión muy personal, se hace indispensable en la construcción de aplicaciones a gran escala el desarrollo formatos personales basados en esquemas que almacenan la información empleada de modo comprimido para la utilización de un o unos recursos de nuestra aplicación, permitiéndole al usuario final mayor comodidad y seguridad durante el transporte de la información y ofreciéndole la capacidad de hacerlas compatibles con otras aplicaciones.
Además dejar a un lado (dependiendo del objetivo) el típico uso de bases de datos que requieren recursos adicionales del computador además de interpretadores, etc. Considero que la información redactada contribuye considerablemente a encaminar vuestros esfuerzos en esa dirección.
Finalmente a manera de conclusión
El computador sin software solo tiene capacidades para hacer operaciones aritméticas simples (sumas, restas, multiplicación, etc.).
Y es el software que valiéndose se esas simples operaciones con procesos como los antes explicados puede crear la interfaz como de la que hoy disfrutamos en materia de Sistemas Operativos.
Todos los lenguajes desde los más altos como Php hasta los más bajos como Assembler pasan por binario, cada vez que movemos el Mouse eso esta produciendo un procesamiento de datos binarios, en fin, orienta tus esfuerzos como programador a reducir al máximo el consumo de recursos, seguro lograras una suma consumiendo menor cantidad de recursos que lo habitual.
esto de los bits me suena algo interesante de mencionar ya que no muchos e ponen interes a lo relacionado con los bits y a sus cifras representativas.
Muy interesante articulo
quiero aprneder a saber que es bits,KB,MB,GM,TB. quiero la formula para saber
wena pag :s
adio_
la pagiuna esta wena ademas a las personas ke pyutean y demás si tanto saben hagan una web uds
mandaga de inservibles cara de pito
ademas yo lei la pagina y hasta ahora todo lo ke dice la pagina es verdaadd gayyss
saben la pagina esta buenisima la verdad que todos los ignorantes que dicen esas tonteras anteriormente no saben nada de esto la verdad que lastima meda
PENSE QUE EN SU PAGINA ENCONTRARIA LO QUE BUSCABA PERO NO ENCONTRE NADA EN FIN GRACIAS POR DARSE EL TIEMPO DE ESCRIBIR EN SU PAGINA LO QUE ESTA EN LOS LIBROS
Y BUE…GRACIAS POR VERME LA CARA DE COJUDO ESCRIBIENDO ESTO
me arece wena la pagina y no c por wque escriben cagada y media los anteriores
Me gustaria q me ayudaran a terminar un trabajo que tengo, en realidad no se que son estos formatos, y necesito saber sus creadores, significado de cada letra, caracteristicas, semejanzasy diferencias de cada uno ellos son: PICT,BMP,GIF,TIFF,JPG,PNG,PSD.
por favor ayudenme no se donde mas buscar gracias
vayanse al demonio cuanto caracreres se ppuede almacenar en un bit cual es el minimo caracter
pinches mamones, imbesiles, claro que la informacion es basica, yo lo se, ustedes lo saben, pero hay personas que quieren aprender, y al fin y al cabo es informacion que enriquese a internet, pinches idiotas, segurito se sienten hackers… pendejos, jaja, bueno adios y mueranse. BUEN SITE!
La verdad es una lastima que se pongan a criticar una pagina de esa manera, con muy poca madurez, parecen niños, pero bueno, creo que si les parece que esta bien o mal la pagina hay que decirlo pero de manera constructiva ayudandole a los creadores a mejorarla no de la manera en como lo hacen. Si se sienten muy salsas ponganse a hacer una pagina y publiquenla para que los demas se las critiquen y sientan. Saludos a todos.
me parece muy ilustrativa esta pagina y es de mucha ayuda . los felicito y que Dios los bendiga!
me parece muy ilustrativa esta pagina y es de mucha ayuda . los felicito y que Dios los bendiga!
hola
gracias encontre la informacion que necesitaba
Esta muy bueno, sigan asi… informacion basica pero muy importante conocerla, esto es primordial para programadores….
que chevere!!!! me gusta conocer mas y mas…. sigan asi……..
me gustaria que me ayudaran con un trabajo que tengo… debo explicar completamente la logica del computador.. la pag me parece buenisima… por favor ayudenme…
dame el formato ejemplo osea
la sintaxis del file(RGB)
gracias…
Gracias, encontré lo que necesitaba
¡Los maleducados comentarios de arriba son totalmente inadmisibles!
CRIOS…
En fin… muchas gracias, ¡y no les hagan ni caso!
oe buena esta la page pero tengo una pregunta que no se si esta relacionado con eso, ?como es que un numero mayor (ejm 60, 000) puede almacenarse en un entero que ocupa 2 bytes… espliquenme eso
se lo agradeceria
tengo una pregunta que no entiendo como puedo hacer que un numero mayor(ejm 60, 000)se pueda almacenar en un entero que ocupa 2 bytes …..
expliquenme eso por favor
se los agradeceria muchisimo bye gracias ……….
no estais korgaos todos
iyo dejar la base y la heroina enganxaos
deberian poner la tabla del del codigo ascii
ta wena la pajina pero faltan mas contenidos pa encontrar las tareas aki mismo(todas)
OLA XIDA
ZIMON ZIGAN
BYE
BXOX
M AYUDAN CON LA TAREA
realmente no encontre lo q necesitaba solos hablan de bits y byte pero todavia faltan mas respuestas concretas
Hola..! me gustaria si por favor me pueden mandar una lista con todas las unidades de memoria o datos… gracias!!!
necesito las caracteristicas de la tablka ascii basica gracias
esta muy buena la pajina los felicito aunke no encontre en esactitud lo ke buscaba aaaa y no les agan caso a los idiotas ke escriben porkerias
Necesito reducir kb de fotografias en bmp pero que continuen siendo BMP
Agradezco la ayuda.
esto es un asco no me sirbio de nada y me daque mala nota tengo 30 que mal serbicio que hasco
Tiene lo que debe tener
quiero saber cuanto almacena exactamente un bit y un byte..
esta muy buena la pagina pero qreria saber cuantos bits almacena un cluster
ESTA BUENA LA PAGINA PERO EN EL EJEMPLO DEL OPERANDO NOT….
ME PARECE QUE EL RESULTADO DEBERIA SER
11111010=250
SI ESTOY MAL CORRIJANME
me guastaria algo mas concreto de lo que equivale un bit….la verdad con esas respuestas uno queda igual!!!
ta chida la pagina pero tanbien opino que
algunos resultados estan mal.
ola muy buena pagina
sigan asi
xau
Pinche pendejos, vayan al colegio otra vez a aprender escribir. ¿Que parte de unidad básica de información no les quedó claro?
Esta página es para programadores, no para retardados mentales como ustedes.
Quizás lo que les falta es IQ y no un poco menos de ignorancia.
Alguien sabe como realizar un contador módulo 8 que cuente los primeros 8 números primos?