Programación en Lenguaje Ensamblador

-El Verdadero Lenguaje de las Máquinas-

¿Cuantos Bits tiene un Byte?

Los gringos tienen un chiste en que un ingeniero del departamento de sistemas le pregunta a alguien del área administrativa si sabe cuantos bits tiene un byte, y este contesta que eso depende del tamaño del perro. Este chiste no tiene el menor sentido en español. Sin embargo en inglés la palabra BIT significa mordida o huella de diente y BYTE suena igual que “Bite” que es el verbo ‘morder’.

Comencemos por el principio. Diario escuchamos que un archivo mide una cierta cantidad de bytes pero muy pocos, inclusive muchos ingenieros, se han topado cara a cara con uno. Asi que usaré todos mis recursos para explicar un concepto tan elementalmente como me sea posible.

El equivalente del BIT en esta dimensión es como un foco que puede representar cero o uno. Encendido o apagado. Eso cualquiera lo sabe, al igual que saben que un átomo tiene protones, electrones y neutrones. Pero pocos interactuan directamente con estos. Un grupo de 8 bits que pueden ser cero o uno tiene el nombre de BYTE.

Lo mas parecido que existe a un BYTE en el mundo de los humanos es una CAJITA. Una cajita muy pequeña que puede almacenar un número. Este número puede ser cualquiera entre 0 y 255. O lo que es lo mismo, 8 bits.

La dichosa memoria RAM(nada que ver con los carneros) es un chorizote de varias celdas de memoria con capacidad de un byte. Para que se den una idea, una máquina con un Gigabyte en ram tiene algo así como 2 elevado a la 30 que es mas o menos 1,073,741,824 cajitas como estas. En el dibujo que acompaña a esta entrada viene una de estas celdas de memoria. Como se puede ver, una de estas celdas de capacidad de un byte tiene 8 espacios para guardar bits (aquí en rojo). Cada una de estas celdas tiene un valor posicional, como en el decimal se manejan unidades, decenas,centenas,etc. Es una suma de potencias de dos, contando de derecha a izquierda la primera posición vale 2 elevado a la cero = 1 y la última 2 elevado a la 7 = 128. Como puede verse en la última celda del dibujo, los números mas chiquitos representan el valor posicional de cada celda y su contenido nos dice si este valor es sumado (uno) o ignorado (cero) en el resultado final.

En el ejemplo del dibujo, la primer celda tiene todos sus bits en cero, lo que significa que la celda contiene un cero. El segundo ejemplo tiene una celda de byte llena. Si sumamos 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 nos da 255 que es el valor máximo que podemos representar con un solo byte. Para números mas grandes se usan varios bytes juntos. Pero eso lo veremos otro día. En el tercer dibujo, la celda de memoria contiene 100, pues 64 + 32 + 4 = 100.

Existe una forma para representar los bytes llamada Hexadecimal, con esta notación es posible representar un byte con 2 cifras, algo similar a lo que pasa con las centenas y un par de cifras decimales. Además de que el binario puro ocupa demasiado espacio en pantalla.

Bueno, ya fue mucha clase por hoy, ahora pónganse a chatear para que no les duela la cabeza pues mas adelante vamos a ver el tema de los arreglos y los números en Hex. Creo que lo de hex lo veremos primero.

Esto es un byte

Esto es un byte

>>>>Pasa al siguiente nivel>>>>

***Esta nota pertenece a “La Saga del Completo Principiante”*** Da click en este enlace para pasar a la siguiente entrada de esta serie.

diciembre 27, 2008 - Posted by | Uncategorized | , , ,

28 comentarios »

  1. una pregunta…. porque al sumar los numeros o los unos de cada celda se tiene que hacer de derecha a izquierda, y no de izquierda a derecha?

    no soy programador, pero mi inquietud esta vigente
    solo por curiosidad

    Comentarios por Carlos | diciembre 28, 2008 | Responder

    • Es la manera en que se leen todos los números binarios, es igual que los números que siempre ocupamos, el de menor valor siempre está a la izquierda. (1502=1000+500+00+2) el más grande es el de la derecha. Solo que en los binarios ocupas 2^n, donde n es la posición

      Comentarios por Airin Bridges | abril 4, 2019 | Responder

  2. una pregunta sin mucho sentido
    que significa WWW
    acaso es La red mundial?….

    Comentarios por Carlos | diciembre 28, 2008 | Responder

  3. rius

    Super Mercado de Sectas

    Comentarios por Roberto Carlos | diciembre 30, 2008 | Responder

  4. Muy buena explicacion acerca de los bits, me imagino que te tardaste un buen en hacer el dibujo que representa un Byte en el Paint. Eso es amor al ensamblador

    Comentarios por blackpig | marzo 30, 2009 | Responder

    • Y eso que wordpress baja la calidad de los dibujos que se suben para ahorrar espacio. Y si, me gusta el paint y si no lo usara programaria los graficos con ensamblador. Creo que aun no soy tan bueno.

      Comentarios por asm86 | marzo 30, 2009 | Responder

  5. Pues con un editor hexadecimal, te agarras construyendo un bmp o un tga. Y si tomas peyote de seguro te sale un gif o un jpg.

    Jaja es broma.

    Comentarios por blackpig | marzo 31, 2009 | Responder

    • Aunque no lo creas, esa forma de trabajar existe y se llama ASCII-ART.

      Comentarios por asm86 | marzo 31, 2009 | Responder

  6. Calors:

    1.
    Los puedes sumar de izquierda a derecha o de derecha a izquierda, no importa el orden si no su valor dependiendo de la posicion del bit.

    2.
    WWW significa: World Wide Web. que en español es algo asi como red de area mundial.

    Comentarios por Puerco | marzo 31, 2009 | Responder

  7. chinguen a su madre yo solo quiero saber cuantos bit caben en un byte

    Comentarios por gerardo | octubre 20, 2009 | Responder

    • 8

      Comentarios por asm86 | octubre 20, 2009 | Responder

  8. solo kiero agradecer las excelentes xplicaciones que das, yo studio ing en sistemas y la verdad es q los profesores (la mayoria, no to2) se preocupan solo por cumplir, realmente no les interesa si te kedo alguna duda, ahí cada kien se «rasca» como puede (perdon la xpresion)..en este tuto he encontrado muchas respuestas a mis dudas, explicas de una manera super transparente, te entiendo a la perfeccion, muchas gracias!!
    dtb

    Comentarios por karen | abril 24, 2010 | Responder

    • Gracias, es bueno saber que hay quienes encuentran util esta informacion. Tengo mas notas publicadas mas o menos en esa misma fecha que hablan sobre casi todo lo que se ve en la mayoria de los planes de estudios de ingenieria de la materia de ensamblador. Igual y le muestras este blog a tus maestros para que lo usen en sus clases.

      Comentarios por asm86 | abril 24, 2010 | Responder

  9. Eh Mario, no les hagas la tarea.

    Comentarios por blackpig | abril 8, 2011 | Responder

  10. no entiendo nada xD

    *un byte son 8 bits o 255 bits?

    *por que son 8 cuadritos?

    *cada cuadrito es un bits?

    *un bit es 255? un byte son 8 bits?

    Comentarios por armoryneSKY | febrero 7, 2012 | Responder

    • Paciencia, esto es dificil
      Cada cuadrito es un bit que puede valer cero o uno. Con 8 bits puedes hacer 255 combinaciones de ceros y unos
      En un byte los 8 bits (cuadritos) tienen los siguientes valores: 128, 64, 32, 16, 8, 4, 2 y 1.
      Si haces la prueba puedes obtener cualquier valor entre 0 y 255 con solo sumar algunos de estos numeros sin repetir ninguno (0 ninguno 255 todos)
      el cero indica que no sumas el numero y el uno que si lo sumas
      Por separado cada cuadrito es un BIT que puede valer CERO o UNO y cuando se juntan puedes formar cualquier valor entre cero y una potencia de 2 (1, 2, 4, 8, 16, 32, 64, 128…)
      Hay mejores explicaciones en entradas que vas a encontrar mas adelante, asi que no te preocupes demasiado si no entiendes algo y tomalo a la ligera

      Comentarios por asm86 | febrero 7, 2012 | Responder

      • Corrección, con 8 bits puedes hacer 256 combinaciones de ceros y unos, el número máximo que puedes representar es el 255.

        Les dejo un enlace a mi blog que no actualizo muy seguido pero me divierto, buen blog, felicidades!

        http://blogeek-cpp.blogspot.mx/

        Comentarios por Carlos Morales | octubre 10, 2012

    • 1) un bit es el nombre que se le da a la señal de voltaje, cuando hablan de ceros y unos es solo para que sea mas familiar, en realidad lo que sucede internamente es la presencia o ausencia de señales, cuando hay 5 voltios es un uno cuando hay 0 voltios es un cero
      ejemplo; 0 1 0 1 representa: 0 voltios 5 voltios 0 voltios 5 voltios. Entonces la cadena 0 1 0 1 es una cadena de cuatro bits, la cadena 1 0 1 0 1 1 1 es una cadena de 7 bits y así sucesivamente, a una cadena de 8 bits se le llama byte, 255 es el numero que representa cuando toda la cadena esta en 1 es decir
      1 1 1 1 1 1 1 1= 255
      2) Los cuadritos solo son posiciones de memoria es para que cada cuadrito represente un bit
      3) No un bit no son 255 mas bien una cadena de 8 bits todos en estado 1 son 255
      si un byte son 8 bits

      Comentarios por Elkin San | noviembre 5, 2013 | Responder

  11. eso es todo!! Carlos morales! 256 combinaciones de bits(0 y 1) un byte=8bits y con esos bits puedes representar los numeros entendibles para seres humanos(decimales) del minimo 0 hasta el maximo 255.

    Comentarios por Guillermo Magana Ventur | diciembre 27, 2012 | Responder

  12. Tengo una pregunta para ustedes grandes conocedores, es la siguiente:
    necesitar hacer que un programa tenga autoguardado es decir se guarde un documento cada cierto tiempo
    el programa esta licenciado, necesito ver su codigo de fuente y editar desde hay. Me podrian ayudar

    Comentarios por alex daniel | febrero 15, 2013 | Responder

    • El autoguardado simplemente revisa la última vez que se guardó el documento y guarda en un archivo lo que está en memoria cada cierto tiempo. Por ejemplo si quieres que guarde cada 5 minutos inicializas una variable en 3000 y restas una unidad cada segundo. Cuando llegue a cero guardas el documento y vuelves a ponerle su 3000 (o la cantidad de segundos que quieras) a la variable. Un autoguardado es así de sencillo.

      No se que tipo de programa sea pero si es muy avanzado y tiene capacidad de macros puedes hacer una macro que autoguarde los documentos sin necesidad de modificar el código. Si quieres trabajar con un código de otra persona mejor crea una función que se llame cada cierto tiempo y autoguarde en lugar de modificar el código ya hecho. Hacer ingeniería inversa al software es mucho mas dificil de lo que la gente cree. Incluso es mas dificil que hacerlo. Un autoguardado en pseudo C sería como esto

      //en algún lugar de la inicialización de variables
      tiempoautoguardado = 3000; //3000 segundos

      //función de autoguardado
      int autoguardar(int tiempo)
      {
      if(tiempo <=0)
      {
      guardar();
      tiempo = 3000
      return tiempo
      }
      tiempo–;
      return tiempo;
      }

      //llamada a función

      tiempoautoguardado =autoguardar(tiempoautoguardado);

      esto puede darte una idea. Solo recuerda inicializar el tiempo de autoguardado una sola vez y llamar la función cada segundo. Puedes revisar las funciones de tu sistema para obtener el tiempo en segundos

      Comentarios por asm86 | febrero 16, 2013 | Responder

  13. gracias por tu respuesta, me ayudo mucho, no hare ingenieria inversa lo hare con pseudo c

    Comentarios por alex daniel | febrero 17, 2013 | Responder

  14. y a cuanto equivale un byte en numeros?

    Comentarios por fernando gil | junio 4, 2013 | Responder

  15. xD men me ayudaste full Gracias

    Comentarios por steven | septiembre 4, 2013 | Responder

  16. cinco semestres de tecnología en electrónica y he resuelto mas dudas leyendo este documento

    Comentarios por Elkin San | noviembre 5, 2013 | Responder

  17. Viejo que puedo decir, comense a leer estos articulos por mera curiosidad y ya no puedo despegarme, realmente es un tema que llama mi atencion, sigue asi.

    Comentarios por DNX | abril 5, 2014 | Responder

  18. Sabe como atrapar al lector amigo, empece y ya no quiero dejar de leer.

    Comentarios por Rubén Darío Salgado | noviembre 14, 2015 | Responder

  19. wow 2020 ya loco

    Comentarios por olivia | noviembre 14, 2020 | Responder


Replica a asm86 Cancelar la respuesta