Mostrando las entradas con la etiqueta Commodore 64. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Commodore 64. Mostrar todas las entradas

jueves, 4 de marzo de 2021

Guía para instalar VICE (emulador de Commodore) en Linux Mint Debian Edition (y Debian) y no morir en el intento.

 (P) Hugo Napoli, 2021 

Tuve la oportunidad de utilizar una Commodore 64 a temprana edad (¡gracias, "Albertito"!), y eso me cambió la vida. Pocas experiencias han sido tan gratificantes para mí, en mi vida de "ser tecnológico".

Desde niño (y hasta el día de hoy) continúo utilizando una Commodore 128 (real, la cual todavía poseo y funciona) y a la Commodore 64 y a sus demás "hermanas", las utilizo gracias a un recurso de la Commodore 128 (el clásico "GO 64") o a un fantástico emulador, llamado "VICE (VersatIle Commodore Emulator)".


Para los usuarios de Windows, casi siempre todo es más fácil: hay miles de soluciones al alcance de la mano, las soluciones llegan a través de programas y no de procedimientos -para lo cual no se necesita saber mucho de informática (ni de Windows siquiera)-, pero cuando llegamos al terreno Linux... Casi todo puede salir tan bien como mal, si no se sabe lo que se está haciendo.

Es por eso que escribí esta guía de "primeros, intermedios y últimos auxilios"... Para que tengas una referencia más a la hora de "volver a empezar" o "volver a creer", si las cosas se tornan complejas.

Solo una advertencia: estarás utilizando la terminal como superusuario. De este modo, puedes introducir un comando equivocado, o cometer un solo error, y eso podría llevarte a algo fatal a nivel de sistema. ¡Presta atención!

¡Manos a la obra! 



I. Desde el centro de software (por ejemplo, desde "Synaptic"), instala el emulador (se llama "vice") y ve directamente al punto II.

Si allí no lo encuentras, baja desde aquí el paquete "vice_3.3.0.dfsg-2_amd64.deb" e instálalo: https://pkgs.org/download/vice

II. Abre la terminal y prepárate para copiar y pegar comandos en ella.

Un método muy conveniente es seleccionar con el ratón los comandos que aquí dejo, y luego pulsar CTRL + C para guardarlos en memoria. Luego, sobre la terminal, pulsar CTRL + SHIFT + V para pegarlos.

Entonces, en la terminal, ejecuta
sudo su
e introduce la contraseña de root.

III. cd /usr/lib/vice

IV. mkdir temporal

V. cd temp*

VI. Desde aquí descarga (nuevamente) el emulador (en este caso, se llama "vice-3.5.tar.gz"):

VII. cp /hugo/home/Descargas/vice-3.5.tar.gz /usr/lib/vice/temporal
 
1. Sustituye "hugo" por el nombre del usuario que estés utilizando en Linux, y recuerda hacer esto siempre que aparezca la palabra "hugo" en esta guía.
 
2. La versión que empleo como ejemplo es la 3.5, pero en tu caso puede ser otra. De ser así, sustituye el "3.5" por lo que corresponda (siempre que aparezca el "3.5" en esta guía).

VIII. tar vzxf vice-3.5.tar.gz

IX.   cd /usr/lib/vice/temporal/vice-3.5/data/C64/

X.    cp basic chargen kernal /usr/lib/vice/C64/

XI.   cd /usr/lib/vice/temporal/vice-3.5/data/DRIVES/

XII.  cp d1541II d1571cr dos* /usr/lib/vice/DRIVES/

XIII. cd /usr/lib/vice/temporal/vice-3.5/data/PRINTER/

XIV. Ahora, debes ejecutar algunos pasos más para que funcionen también los emuladores de Commodore 128, Commodore VIC20 y Commodore Plus 4:

cd /usr/lib/vice/temporal/vice-3.5/data/C128/
cp basic64 /usr/lib/vice/C128/
cd /usr/lib/vice/temporal/vice-3.5/data/VIC20/
cp basic /usr/lib/vice/VIC20/
cd /usr/lib/vice/temporal/vice-3.5/data/PLUS4/
cp basic /usr/lib/vice/PLUS4/

XV. Desde aquí, descarga una versión más antigua del emulador, (para hacer funcionar también al emulador "Commodore Pet"): https://sourceforge.net/projects/vice-emu/files/old-versions/WinVICE-2.4-x86-r31615.zip/download

XVI. Descomprime el archivo ".zip" que has descargado.

XVII. cp /home/hugo/Descargas/WinVICE-2.4.29-x86/PET/* /usr/lib/vice/PET/

De nuevo: la versión que empleo como ejemplo es la 2.4.29, pero en tu caso puede ser otra. De ser así, sustituye el "2.4.29" por lo que corresponda. 
 
XVIII. Ve al panel de usuarios y agrégate al grupo "kmem"

XIX. En la terminal escribe 
exit
y pulsa ENTER (para salir del modo "superusuario").

XX: para iniciar...    ejecuta...   y pulsa...
    Commodore 64       x64          ENTER
    Commodore 128      x128         ENTER
    Commodore VIC20    xvic         ENTER
    Commodore Plus 4   xplus4       ENTER
    Commodore Pet      xpet         ENTER
    Commodore CBM-II   xcbm2        ENTER
(o ejecuta cada emulador desde el menú de inicio [todos están en la categoría "Otros"], con un simple clic).

SOLUCIONES A ERRORES MÁS COMUNES:

Si no funciona el emulador de "Commodore 128", sigue estos pasos:
Descarga desde aquí la última versión del emulador: https://sourceforge.net/projects/vice-emu/files/latest/download
Descomprime el paquete que has descargado.
En la terminal, ejecuta:
cp /home/hugo/Descargas/vice-3.5/data/C128/* /usr/lib/vice/C128/

Si no funciona el emulador de "Commodore Plus 4", sigue estos pasos:
Descarga desde aquí la última versión del emulador: https://sourceforge.net/projects/vice-emu/files/latest/download
Descomprime el paquete que has descargado.
En la terminal, ejecuta:
cp /home/hugo/Descargas/vice-3.5/data/PLUS4/* /usr/lib/vice/PLUS4/

Si no funciona el emulador de "Commodore CBM II", sigue estos pasos:
Descarga desde aquí la última versión del emulador: https://sourceforge.net/projects/vice-emu/files/latest/download
Descomprime el paquete que has descargado.
En la terminal, ejecuta:
cp /home/hugo/Descargas/vice-3.5/data/CBM-II/* /usr/lib/vice/CBM-II/

Si luego de haber seguido esta guía -al pie de la letra- no funciona ningún emulador, ve a la terminal y ejecuta la siguiente línea:

sudo apt install xa65 libreadline-dev libxaw7-dev libgtkmm-3.0-dev libpulse-dev

Y si aún así no funciona... ¡Instala OpenSuSE Linux, que con 2 clics de ratón, VICE queda instalado y funcionando!


Fuentes consultadas:



domingo, 27 de noviembre de 2016

Introducción a la programación secuencial con Commodore Basic 2.0

                    (P) Hugo Napoli, 2016                   


Introducción a la programación secuencial con Commodore 64 Basic.

1. Un poco de historia. Breve introducción.

El Commodore 64 Basic, o "Commodore 64 Basic V2", fue diseñado por Jack Tramiel (el creador de la computadora conocida como "Commodore 64") y Bill Gates, presidente de Microsoft (creador de Windows).
Lucía exactamente así:

Imagen: Wikipedia.

En esa época, se pensaba "a lo Apple" (en realidad, Apple copió esta forma de fabricar): se diseñaba una computadora, y luego, se diseñaba un Sistema Operativo específicamente para ella.

Los ordenadores eran como una pieza de "firmware". La empresa Apple, ha tomado ese ejemplo y lo aplicó en sus inicios (4a. generación de ordenadores), y así sigue haciéndolo hasta el día de hoy, más de 30 años más tarde.

Decir que las computadoras de la 3a. generación (como lo es la maravillosa "Commodore 64", por ejemplo) y que las de Apple de hoy en día "son como una pieza de firmware", significa que para ese hardware, no hay mejor Sistema Operativo que el que lo hace útil, y que, a su vez, para ese Sistema Operativo, no hay una mejor pieza de hardware que la que lo contiene.

En pocas palabras:
- la Commodore 64 es la mejor computadora para el Sistema "Commodore 64 Basic", y
- el Sistema "Commodore 64 Basic" es el mejor para la computadora Commodore 64.

Así lucía una Commodore 64, la cual traía el teclado integrado (la placa madre o motherboard está debajo del mismo, como sucede con los ordenadores portátiles, "netbooks", "laptops" o "notebooks").
Imagen: Wikipedia.
 
Tanto esta computadora como este Sistema, ya son obsoletos; es decir, no se fabrican más, y ya casi no se utilizan.
Entonces, ¿por qué tu profesor insiste con esto?
¿No sería mejor aprender a programar con lenguajes de programación modernos como Java o Python?

La respuesta es la siguiente:
si vas a programar, primero debes aprender a pensar como un programador, y ese tipo de razonamiento, perfectamente te lo enseñará la experiencia con el Commodore 64 Basic y una obsoleta pero divertida y funcional computadora "Commodore 64".
Además, este tipo de Basic (hay muchos otros) es mucho más fácil de comprender que un lenguaje de programación moderno.

Algo importante que debes saber, es que el Commodore 64 Basic sigue funcionando hoy en día en sistemas Windows, MAC, y GNU-Linux... ¡incluso hay versiones para smartphones!

¿Cómo puede funcionar un Sistema Operativo dentro de otro, entonces?
Pues bien, muchos programadores se han reunido y han trabajado muy duramente para conseguir que el Basic de la Commodore 64 pueda ser instalado, como si fuese un programa común, en un Sistema Operativo moderno. Es decir, que así como instalas un navegador como Mozilla Firefox sin problemas, también puede instalar este Basic en simples pasos. Luego te diré desde dónde descargar este maravilloso Sistema.

Para que todo esto tenga más cercanía con la realidad, mírame a los 14 años utilizando una Commodore 64:


Lo que se ve en la imagen, es lo siguiente:
1 - el ordenador de 8 bits, "Commodore 64" (no utilizaba ratón o "mouse", solamente teclado, el cual estaba integrado en el mismo ordenador y no poseía tildes ni letra eñe),




2 - la disquetera o "diskettera" (cumplía la función de una lecto-grabadora de CD o DVD),



3 - la casetera o "cassette unit" (¡gracias a ella, se podía leer y guardar información en un simple y económico casete comprado en el quiosco de la esquina!),

4 - un televisor "blanco y negro" (no mostraba imágenes a color, sino en escalas de grises) de 14 pulgadas, por donde salía la imagen de la Commodore 64 (el televisor cumplía la función de un monitor de hoy en día, brindando el sonido además),


5 - Un transformador de 220 a 110 Voltios, porque la Commodore 64 casi siempre "venía de Europa", (o de países en donde se utilizaban 110 V en lugar de 220 V como en nuestro país, entonces, antes de "enchufarla a la pared", había que reducir su voltaje a la mitad... sino... ¡PÚM! explotaba literalmente el transformador interno de la Commodore 64, y ¡adiós diversión!),

6 - Una palanca o "joystick", que era como un eje que respondía a los movimientos de la mano como si se tratara de un gamepad (izquierda, derecha, arriba, abajo y botón de acción (con el se podía disparar, saltar o abrir una puerta en un juego, dependiendo del contexto),
7 - 2 filas de casetes (se ven 16 en total, los cuales eran cada uno de 90 minutos, siendo que los programas y juegos ocupaban unos 3 o 4 minutos promedio en cada casete... en esos 16 casetes había espacio para... ¡360 programas!),

8 - el "doble casetero" (o doble casetera): en el casetero de la izquierda, se colocaba el casete que contenía información. En el casetero de la derecha, se colocaba el casete vacío o "virgen". Se encendía el doble casetero y la toda la información contenida en el casete de la izquierda, se copiaba en unos 30 minutos al casete de la derecha, pudiendo así duplicarse la información para "regalarle un lote de juegos a un amigo", etc.),
9 - el autor de este artículo, (¿tu profesor?), Hugo Napoli, a los 14 años de edad (ver graciosa fotografía en el nivel superior).
¿Cómo lucía todo esto?




2. Breve introducción a la lógica de la programación.

Vamos a pensar como piensan los programadores.
Antes de comenzar a trabajar, ellos piensan fragmentos de seudo código, los cuales luego transforman a código.
El seudo código (o pseudo código) está compuesto por ideas que son una mezcla de lo que entiende un ser humano entreverado con código de lenguaje de programación.

Para crear líneas de seudo código, tenemos que pensar en sencillas frases con verbos conjugados en infinitivo, tales como ("ir al centro", "bajar del ómnibus", "jugar al fútbol", "pagar el alquiler", etc.), y numerarlas en el orden en el cual queremos que sean ejecutadas por una computadora.

Veamos cómo funciona esto.

Puedes escribir tantas líneas de código como quieras, siempre que las numeres previamente.

Por ejemplo, si quieres que la computadora te salude, luego te prepare el desayuno, y luego se apague, escribirás eso así:

1 Saludar al usuario
2 Preparar el desayuno
3 Apagarme

El Commodore 64 Basic, "mira" el número que está a la izquierda, y entonces "sabe" qué tiene que hacer primero, y qué tiene que hacer después.
Observa el siguiente ejemplo y piensa en dónde está el error:

1 Saludar al usuario
3 Preparar el desayuno
2 Apagarme

Ahora bien... ¿qué tal si quisiéramos que antes de apagarse, la máquina nos preguntara si necesitamos algo más? 
Según el esquema que venimos viendo, esa línea debería introducirse exactamente antes del apagado, pero inmediatamente después de preparar el desayuno... Pero el Commodore 64 Basic necesita números enteros, por lo tanto, lo siguiente, no se puede realizar:

1   Saludar al usuario
2   Preparar el desayuno
2.5 Preguntar si se necesita algo más

3   Apagarme

Mientras el número de la siguiente línea sea mayor que el anterior y no se pase del 65535, no importa cuál utilices.
Te recomiendo que avances de 10 en 10, porque si tienes que agregar líneas de por medio, será mucho más fácil que si avanzas de 1 en 1:

10 Saludar al usuario
20 Preparar el desayuno
25 Preguntar si se necesita algo más

30 Apagarme

El Commodore 64 Basic te permite escribir hasta unas 65000 líneas (que no equivalen precisamente a renglones).
Cada línea puede contener 1 o 2 renglones de código, e incluso hay maneras de extender esta cantidad de información hasta 3 e incluso hasta 4 renglones en situaciones extremas.
Si tienes la posibilidad de escribir hasta 65535 líneas de código, y cada una de ellas es de 2 renglones (promedio), significa que puedes hacer un programa que posea hasta 130000 renglones de código... ¡un verdadero disparate!



3. Introducción a la programación en Commodore 64 Basic

Hacer que el ordenador nos prepare el desayuno y se apague solo, son tareas bastante complejas. Comenzaremos por hacerlo saludar, ¿qué les parece?

3-a) INSTRUCCIONES PRINT E INPUT.

Para que la máquina le muestre un mensaje en la pantalla al usuario, tal como "Ingrese su contraseña para continuar", o "Pulse la tecla S para salir del programa", se utiliza el comando PRINT.

Sus sintaxis es la siguiente:

caso 1: PRINT "mensaje"
caso 2: PRINT variable

El caso 1 es para mostrar mensajes que contengan texto.
El caso 2, es para mostrar contenidos almacenados en una variable (ya veremos qué es eso, no te preocupes).

Utilizaremos, entonces, el primero de los dos casos. Observa cómo se realiza esto:

10 PRINT "HOLA. COMO ESTAS?"

Acostúmbrate: no hay signos de "¿" ni "¡", ni hay "á", "é", "í", "ó", "ú", ni "ñ" (por ahora).

Si ejecutamos este programa de una sola línea, lo que hará la computadora será mostrar el mensaje HOLA. COMO ESTAS?, y a continuación, terminar el programa, puesto que ya no hay más líneas de código para procesar.

Existe otra instrucción o sentencia, llamada INPUT, que sirve para hacerle preguntas al usuario, por ejemplo.
PRINT muestra un mensaje y da paso a la siguiente línea de código inmediatamente.
INPUT puede mostrar un mensaje o no, pero esperará hasta que el usuario responda para dar paso a la siguiente línea de código.

Sus sintaxis es la siguiente:

caso 1: INPUT "mensaje";variable
caso 2: INPUT variable

Si esperamos una respuesta alfanumérica (letras, palabras), utilizaremos cualquier letra seguida del signo de pesos, tal como "A$", "B$", "C$", etc.

Si esperamos una respuesta numérica (números, cifras), utilizaremos cualquier letra, tal como A, B, C, etc.

Como estamos esperando una respuesta de tipo alfanumérica, utilizaremos A$ en la instrucción INPUT.
Podemos cambiar la línea 10 por la siguiente, entonces:

10 INPUT "HOLA. COMO ESTAS"; A$

Si ejecutamos este programa de (aún) una sola línea, lo que hará la computadora será mostrar el mensaje HOLA. COMO ESTAS?, y a continuación, esperar a que el usuario responda. Su resuesta quedará guardada en la variable A$, y terminará el programa, puesto que ya no hay más líneas de código para procesar.

NOTA: INPUT genera automáticamente un signo de pregunta al final de la oración, de modo que no es necesario incluirlo.

Ahora bien, ¿para qué queremos preguntarle algo al usuario, luego guardar su respuesta en una variable, y luego terminar el programa?

Podemos combinar INPUT y PRINT de manera sorprendente. Observa.

10 INPUT "CUAL ES TU NOMBRE"; A$
20 PRINT "HOLA, "; A$

Al ejecutar este programa (que ya posee 2 líneas), sucederá lo siguiente:

la computadora le preguntará al usuario CUAL ES TU NOMBRE?, y en caso de que el usuario responda "MARIO", la máquina mostrará HOLA, MARIO.

¿Se va poniendo interesante, no?

3-a) OPERACIONES MATEMÁTICAS BÁSICAS.

Veamos cómo hacer cálculos con números.

 

Imágenes:
2a. Commodore 64 que aparece desde el principio del artículo: Wikipedia
Disquetera 1541: nielsthooft.com
Datassette C2N: webpersonal.uma.es
TV 14" B/N: freeicons.png.org
Transformador 220-110v: Amazon
Joystick Quicshot: Richardlagendijk.nl
Cassette: tapedeck.org  
Doble casetero Philips Moving Sound D-8098: ebay
Commodore 64 armada, con unidad 1541 a la izquierda y datassette C2N a la derecha: rcgrabbag.com 
Commodore 64 armada, con datassette C2N sobre la unidad 1541: nickm.com

ENTRADA EN CONSTRUCCIÓN

sábado, 28 de marzo de 2015

Numeración binaria: ¡dejemos de contar con diez dedos!



                    (P) Hugo Napoli, 2015                    

Numeración binaria.

La numeración binaria puede tener únicamente 2 estados (0 y 1), a diferencia de la númeración octal que tiene 8 (0, 1, 2, 3, 4, 5, 6 y 7), la decimal que tiene 10 (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9) y de la hexadecimal que tiene 16 (los 10 decimales para representar los números que van desde el 0 hasta el nueve, mas la A para el 10, la B para el 11, la C para el 12, la D para el 13, la E para el 14, y la F para el 15).

Entonces, podemos observar los siguientes casos:
- que la cifra 10 (hexadecimal) corresponde al número 16 (decimal),
- que la cifra 20 (octal), corresponde al número 16 (decimal),
- que la cifra 10000 (binaria), también corresponde al número 16 (decimal).
¿Por qué, tanto el 10 en hexadecimal, como el 20 en octal, como el 10000 en binario, dan como resultado el 16 en decimal?

La explicación, se detalla a continuación.

Contemos de 1 en 1 en hexadecimal, hasta llegar al 16:

Hex
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10
Dec
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Hex
11
12
13
14
15
16
17
18
19
1A
1B
1C
1D
1E
1F
20
21
Dec
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33


Cuando en hexadecimal llegamos hasta la F, ya no nos quedan más cifras para utilizar, entonces, tenemos que empezar a repetir las cifras de nuevo pero en combinaciones diferentes (10 = 16, 11 = 17, 12 = 18, 13 = 19, etc.).

Ahora, hagámoslo en octal:

Oct
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20
Dec
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Por último, veamos cómo contar en binario:

Bin
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000
Dec
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Esto significa que tenemos varias maneras de representar el número 16, según el sistema de numeración (o base) que estemos utilizando.
Estamos tan acostumbrados a contar en base decimal (o base 10), que nos cuesta comprender fácilmente este complejo sistema.
Tenemos diez dedos en las manos; hemos contado con los dedos desde niños y desde épocas inmemoriales. ¿Cómo podría ser fácil contar con 16 dedos? ¿Y con 8?

Pero... ¿podemos usar nuestros dedos para contar en binario? Eso sí que se puede, y no es tan difícil.

Trabajaremos entonces con la numeración binaria (o base 2) y haremos algunas operaciones con ella.
Veamos algunos aspectos básicos.

Recuerda que solo se pueden utilizan el cero y el uno. No existe el 2, ni el 3, ni las letras. 

¡Solo el 0 y el 1 nos alcanzarán para contar desde el cero hasta el infinito!
- Empezaremos a contar desde el cero -como lo haríamos habitualmente-, y para representar este valor, tomamos justamente un cero.
El cero, siempre es cero, sin importar si estamos hablando de numeración binaria, octal, decimal o hexadecimal.
- El número siguiente al cero, es el uno. Esto tampoco cambia, ni en binario, ni en octal, etc.
Ahora viene nuestro problema: si sólo hay ceros y unos: ¿cómo será posible representar el 2? ¿Está permitido hacer cuentas, como por ejemplo, 1+1 para representar el 2?

La respuesta es simple. Así como en el sistema decimal (o base 10) que utilizamos a diario, no se representa el 2 como “1+1”, en binario, esto tampoco está permitido.
Entonces, ¿cuál es la forma de hacerlo?

Pues bien; como no existe el número 2, pondremos “10”.
Observa la secuencia:

0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, ...

¿Qué observas?
¿Podrías seguir completando la secuencia?
¿Te das cuenta de que después del "111" sigue el "1000"? ¿Por qué?
¿Verdad que tiene lógica?

Ahora bien: contando de uno en uno, hemos visto que el 2 es un 10, que el 5 es un 101, y así podríamos seguir hasta aburrirnos, a ver hasta dónde llegamos, “traduciendo” números binarios a decimales, pero, ¿y si quiero saber qué binario le corresponde al 189? ¿Si quiero saber cómo se representa el 1563 en binario? ¿Cómo hago?

Existe una tabla de conversión que se ajusta perfectamente a nuestras necesidades.
La he tomado de un manual de una antigua Commodore 64, y lo aplico desde la pre adolescencia. Es una de las tantas cosas que agradeceré siempre a mi viejo ordenador.
Dicho manual se llama “Commodore 64 user's guide”, primera edición del año 1982, octava tanda del año 1984, Editorial Commodore Business Machines, Inc.
Si eres curioso o nostálgico, puedes leerlo en línea aquí y aquí (gentileza de zimmers.net, de Bo Zimmerman).


Interpretemos este cuadro.

El mismo posee valores en su nivel superior -el cual llamaremos “guía”-, los cuales comienzan desde la derecha con el valor 1 y terminan con el 128, siendo cada uno de ellos el doble del anterior.
Esta lista puede ser interminable. No tiene por qué terminar en el valor 128.
Lo único que hay que respetar, es que el valor siguiente al 128 -siempre hacia la izquierda-, sea el doble de éste, y el siguiente, el doble de ese, y así sucesivamente.

Podemos construír una tabla bastante más extensa que la del manual:


Una tabla así, tanto nos servirá para colocar un número binario en ella y ver con qué valor decimal se corresponde, como para calcular un número binario a partir de un decimal.

Veamos entonces cómo es que podemos realizar estas operaciones.

Binario a decimal.

Para saber qué resultado decimal nos dará una cifra binaria cualquiera, lo que debemos hacer es crear una tabla parecida o igual a cualquiera de las que figuran más arriba, teniendo en cuenta la longitud en cifras del número binario.
Por ejemplo, si tenemos el binario 100100100, precisamos una tabla que al menos nos permita 9 cifras.
Entonces, ¿hasta qué valor tengo que llegar en el renglón "guía"?

A continuación lo veremos.

Como el binario está compuesto por 9 dígitos (cifras), debemos reservar espacio para 9 casilleros, por lo tanto, empezaremos por el 1 (a la derecha), y terminaremos en el 256 (a la izquierda).

Una vez que hayamos establecido los valores de la guía, colocaremos debajo de ella y con atención, cada uno de los dígitos binarios en el mismo orden en el que los vamos leyendo.

Guía
256
128
64
32
16
8
4
2
1
Binario
1
0
0
1
0
0
1
0
0
Decimal










Luego de esto, y en el renglón de los decimales, iremos haciendo la multiplicación correspondiente.
Se multiplican los valores de la primera columna, y el resultado se coloca en el renglón de los decimales:

256 x 1 = 256
128 x 0 =   0
 64 x 0 =   0
 32 x 1 =  32
 16 x 0 =   0
  8 x 0 =   0
  4 x 1 =   4
  2 x 0 =   0
  1 x 0 =   0

Y la tabla completa nos quedará así:

Guía
256
128
64
32
16
8
4
2
1
Binario
1
0
0
1
0
0
1
0
0
Decimal
256
0
0
32
0
0
4
0
0

Ahora, solamente hay que sumar los valores decimales, y tendremos nuestro resultado final.

256 + 0 + 0 + 32 + 0 + 0 + 4 + 0 + 0    =    256 + 32 + 4    =   292

¡Así que el número binario 100100100 es igual al decimal 292!

O, dicho de otro modo:

¡Cien millones cien mil cien = doscientos noventa y dos!

Esto puede parecer muy complicado o difícil, pero recuerda que hay que realizar varias operaciones, repitiendo el procedimiento una y otra vez, para que puedas recordar todos los pasos a seguir y no se te haga tan complicado el cálculo entre binarios y decimales y viceversa.

Decimal a binario.

Para pasar un número decimal a binario, también se puede utilizar la tabla, pero de un modo diferente.

Supongamos que tenemos el número 315 y queremos ver cómo se escribe en binario.

En primer lugar, tenemos que ver a qué cifra de la guía se acerca más nuestro número decimal.
Como sabemos, la guía empieza a la derecha por el 1, y termina en el infinito, siempre yendo hacia la izquierda y multiplicando por dos al valor anterior, por ejemplo:

a la derecha             : el uno (esto siempre es así);
a la izquierda del uno   : uno por dos    = el dos;
a la izquierda del dos   : dos por dos    = el cuatro;
a la izquierda del cuatro: cuatro por dos = 8;

y así sucesivamente.

En este caso, hay que seguir multiplicando por 2 y poniendo valores cada vez más hacia la izquierda hasta pasar al 315. Veamos qué valor se aproxima más a esta cifra decimal:

512, 256, 128, 64, 32, 16, 8, 4, 2, 1

No hay valor que se aproxime demasiado: el 256 se queda corto, y el 512 se pasa. Pues bien, por ahora escojamos el 512. Siempre es mejor pasarse que quedarse corto... ¿o no?

Ahora, construyamos la tabla, poniendo en la guía los números que acabamos de ver.


Guía
512
256
128
64
32
16
8
4
2
1
Binario










Decimal











Ahora, pensemos de este modo para llenar el renglón binario de la tabla.

Al 512, ¿lo necesitamos?
No, porque se "pasa" del 315.
Entonces, debajo del 512, pondremos un cero.

Sigamos ahora con el siguiente valor, el 256.

Al 256, ¿lo necesitamos?
Sí, porque es más "pequeño" que el 315.
Entonces, debajo del 256, pondremos un uno.
Así iría quedando nuestra tabla:


Guía
512
256
128
64
32
16
8
4
2
1
Binario
0
1








Decimal











Sigamos hasta llegar al final.

Al 128, ¿lo necesitamos?
Atención: como ya hemos "utilizado" al valor 256, de ahora en adelante, cada valor que tomemos, se sumará al anterior (o a los anteriores), de modo que tendremos que sumar 256 + 128 y ver si nos pasamos de 315 o si nos "quedamos cortos".256 + 128 = 384, por lo tanto, no necesito al 128 (nos "pasamos" de 315).
Entonces, debajo del 128, ¿qué pondremos? Un cero, ¡lógicamente!


Guía
512
256
128
64
32
16
8
4
2
1
Binario
0
1
0







Decimal











Al 64, ¿lo necesitamos?
No, porque 256 + 64 = 320 (otra vez nos "pasamos" de 315).
Entonces, debajo del 64, pondremos un cero.


Guía
512
256
128
64
32
16
8
4
2
1
Binario
0
1
0
0






Decimal











Al 32, ¿lo necesitamos?
Sí, porque 256 + 32 = 288, y 288 es menor que 315.
Entonces, debajo del 32, ¿qué pondremos? ¡Al fin! ¡Un uno!

Guía
512
256
128
64
32
16
8
4
2
1
Binario
0
1
0
0
1





Decimal











Y así seguiremos, hasta alcanzar el resultado exacto: 315.

El 315 se forma con los números que hemos visto (256 + 32), mas otro (u otros) que van desde el 16 hasta el 1. Veamos cuáles son:

256 + 32 + 16 = 304. Perfecto. El 16, también nos sirve.

256 + 32 + 16 + 8 = 312. Excelente. El 8 también nos sirve.

256 + 32 + 16 + 8 + 4 = 316. ¡Oh, no! ¡No podemos tomar al 4! Entonces, ¿qué hacemos?
¡Ah, ya recuerdo! ¡Ponemos un cero debajo del 4 y seguimos!

¿Cómo va quedando nuestra tabla?


Guía
512
256
128
64
32
16
8
4
2
1
Binario
0
1
0
0
1
1
1
0


Decimal











¿Estás de acuerdo? ¿Todo va bien? ¡Sigamos!

Al 2, ¿lo necesitamos?
Veamos... 256 + 32 + 16 + 8 + 2... 314. Sí. Necesitamos al 2 porque aún no hemos llegado al 315.
Pondremos un uno bajo el 2 y continuaremos razonando...
¿Llegaremos al 315 o se nos terminará la tabla antes?
¡Ya queda poco!


Guía
512
256
128
64
32
16
8
4
2
1
Binario
0
1
0
0
1
1
1
0
1

Decimal











¡En la tabla nos queda solo el 1! ¿Lo tomaremos o le pondremos un cero debajo?
Veamos... 256 + 32 + 16 + 8 + 2 + 1... ¡315! ¡Sí! ¡El uno nos sirve!
Pondremos un uno bajo el 1 y la tabla nos quedará así:



Guía
512
256
128
64
32
16
8
4
2
1
Binario
0
1
0
0
1
1
1
0
1
1
Decimal
0 +
256 +
0 +
0 +
32 +
16 +
8 +
0 +
2 +
1 =

¿Qué observas?

- Cuando hay un 0 en la celda binaria, el número de la guía que está por encima de éste, no vale nada. 
- Cuando hay un 1 en la celda binaria, el número de la guía que está por encima de éste, conserva su valor.
Pues bien... ¿y entonces? ¿Cómo se escribe el 315 en binario?

¡Nada más fácil!
¡Solo hay que escribir el número binario que está escrito en el renglón de la tabla. Observa:

0100111011

Quitémosle el primer cero, porque el cero a la izquierda no vale nada:

100111011

¡Allí está!
¡El decimal 315, en binario es 100111011!

Si ya puedes pensar matemáticamente como lo hace una computadora...

¡...felicitaciones!