Sistemas de numeración “Mars Climate Orbiter” (MCO) fue la misión a Marte que, hace un par de décadas, hizo perder a la NASA millones de dólares en el espacio por un error que podía evitarse. Los mecanismos de la sonda no presentaron defectos de fabricación ni las condiciones del espacio exterior complicaron el viaje. El problema fue la utilización de dos sistemas numéricos diferentes durante su desarrollo y la falta de verificación de la conversión de millas a kilómetros en el software de navegación. De acuerdo con lo que menciona la agencia espacial, el objetivo del MCO era servir como un canal de comunicación entre las sondas Mars Polar Lander y Deep Space para estudiar la atmósfera del planeta rojo. MCO fue lanzada el 11 de diciembre de 1998 desde la estación de Cabo Cañaveral y la conexión con la sonda, que ya estaba cercana a Marte, se perdió el 23 de septiembre de 1999. ¿Qué fue lo que sucedió entonces? El dispositivo desvió su trayectoria debido a que una parte del software de navegación fue diseñada para hacer cálculos con el sistema decimal y otra parte del sistema funcionaba con la medición inglesa. El error se atribuye a tres instancias diferentes: los proveedores Jet Propulsion Laboratory y Lockhead Martin Aeronautics, además de la propia NASA. De acuerdo con lo que relata El País, Jet Propulsion Laboratory se encargó de programar el sistema de navegación para viajar a distancias basadas en kilómetros. Lockhead Martin Aeronautics, encargada de fabricar la sonda, diseñó los mecanismos para calcular en pies y millas. La NASA, por su parte, omitió verificar cómo funcionaba cada parte de la navegación de la sonda y la envió al espacio. Durante el trayecto a Marte, MCO registró varios errores de cálculo y terminó por desviarse de la zona objetivo de la misión. La NASA rastreó el dispositivo y determinó que los restos se encontraban a 57 km de altura sobre la superficie marciana, cuando en realidad se diseñó para orbitar a 150 km de altura. Esto provocó que la sonda se quemara por la fricción con la atmósfera. La agencia perdió así cerca de 125 millones de dólares y dos años de investigación que iba a durar la misión. Además, complicó las misiones de las sondas Mars Polar Lander y Deep Space que debían interconectar. (Vilchis, 28 de enero de 2020, https://www.vix.com/es/ciencia/223040/a-la-nasa-le-costomillones-y-una-sonda-no-saber-convertir-de-pies-ametros#:~:text=%22Mars%20Climate%20Orbiter%22%20(MCO,exterior%20no%20 complicaron%20el%20viaje). Sistemas de numeración Referencias LECCIÓN 1 de 2 Sistemas de numeración Presentación del caso Como especialista en sistemas de información, te convocan de NASA para asegurar la compatibilidad y coherencia entre los distintos sistemas numéricos utilizados por las computadoras de control de misión del próximo vuelo a Marte. Como este será tripulado, no sería aconsejable asumir la posibilidad de errores de conversión como los mencionados en la introducción. Comenzaremos revisando algunos conceptos, que, muy probablemente, ya han sido tratados en detalle en otras asignaturas, a los cuales estaremos haciendo referencia. En nuestra vida cotidiana, estamos acostumbrados a utilizar un sistema de numeración decimal para representar fechas, precios, edades, etcétera. Estamos tan acostumbrados a usarlo, que podríamos pensar que es el único, pero no lo es. Las computadoras, de hecho, utilizan otros. El sistema decimal está compuesto por 10 símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9); cada uno indica un valor distinto. Para contar, este sistema comienza por el 0 y va sumando de a un dígito hasta llegar al 9. En ese momento, al no haber más símbolos disponibles, se debe agregar una columna a la izquierda y reiniciar el contador de la primera columna: el 10 indica que se incrementó en 1 la segunda columna y se puso en 0 la primera. Cuando la segunda columna se quede sin símbolos, se sumará una tercera y así sucesivamente. El sistema decimal es un sistema posicional que se basa en potencias de diez. De este modo, la primera posición (unidades) se corresponde con 100, la segunda (decenas) con 101, la tercera (centenas) con 102 y así sucesivamente. A continuación, te presentamos un ejemplo. Figura 1. Sistema decimal I Fuente: [Imagen sin título sobre sistema decimal https://antonioldc.wordpress.com/2018/01/07/binario/ I]. (s. f.). Recuperada de Como las computadoras no utilizan los dedos de la mano para contar, sino compuertas electrónicas cuya salida puede ser “prendida” (1) o “apagada” (0), la cantidad de símbolos disponibles es 2. Este sistema de numeración se denomina binario. Figura 2. Sistema binario Fuente: Lopez Díaz del Campo, https://antonioldc.wordpress.com/2018/01/07/binario/ sf, recuperado de El cero está representado por una sola columna con valor 0. El uno, con la misma columna, pero ahora con valor 1. Al no existir más símbolos, se agrega una segunda columna para representar el dos y se pone en 0 la primera: 10. Para contar hasta 3, se debe incrementar en uno la primera columna: 11. Este sistema, como su nombre indica, se basa en potencias de dos. Por tanto, la primera posición se corresponde con 20, la segunda con 21, la tercera con 22, etc. Y en cada una de estas posiciones habrá un dígito, que puede tomar dos valores: 0, 1. Figura 3. Sistema decimal II Fuente: [Imagen sin título sobre sistema decimal https://antonioldc.wordpress.com/2018/01/07/binario/ II]. (s. f.). Recuperada de ¿Te sientes capaz de traducir el ejemplo del sistema decimal a binario y al revés? Deberías poder explicar el cambio de bases en las potencias de cada sistema y realizar la operación inversa. Te preguntarás para qué complicarse la vida con otros sistemas numéricos. La respuesta es simple, cada sistema tiene sus ventajas y desventajas. Para un procesamiento analógico e intuitivo como el de nuestro cerebro, un sistema decimal resulta casi “natural” y cómodo (dentro de nuestras limitaciones). Para un procesamiento de información estructurado y “cableado”, un sistema binario parece la mejor forma de convertir datos en estados de la materia o la energía (presencia/ausencia). Pero el tema no se acaba allí. Dijimos que cada sistema tiene sus ventajas y desventajas. Básicamente, la regla sería, a mayor complejidad del sistema, menos caracteres usaré para representar la información, pero mayor cantidad de caracteres distintos tendré. Veamos por ejemplo los sistemas octal y hexadecimal. El sistema octal utiliza 8 símbolos (desde el 0 hasta el 7), mientras que el hexadecimal utiliza 16 símbolos (del 0 al 9 y desde la A hasta la F). Para ambos sistemas, la representación de números entre el 0 y el 7 es igual que en el sistema decimal ya que utiliza los mismos símbolos, pero, en el caso del octal, para representar un 8 decimal se requieren dos dígitos: “10”. El sistema hexadecimal permite “comprimir” la información, ya que utiliza menos dígitos que otros sistemas para representar el mismo número. Figura 4. Sistema hexadecimal Fuente: [Imagen sin título sobre sistema hexadecimal]. https://antonioldc.wordpress.com/2018/01/07/binario/ (s. f.). Recuperada de Ahora fíjate cuál ha sido el consumo de recursos de procesamiento en cada sistema y su complejidad de representación. El ejemplo de la figura 4 expresa un número decimal que tiene 6 posiciones (566770). Ese mismo número, expresado en un sistema más simple (binario) ocuparía 20 posiciones (10001010010111110010), pero en un sistema más complejo que el binario y el decimal (hexadecimal) solo ocupa 5 posiciones (8A5F2). Codificación Las computadoras utilizan un lenguaje diferente al de las personas para procesar la información. Para poder transformar nuestro lenguaje al lenguaje de una computadora, se requiere una relación entre la información a procesar y el sistema numérico que el computador utilice para realizar su procesamiento. Esta relación se denomina codificación. La codificación consiste en asignar una combinación binaria a cada carácter que se desea representar. Como seguramente ya sabes, “bit” es un acrónimo de binary digit (dígito binario) y es la mínima unidad de información que viaja y se almacena en un computador. Cada bit representa un estado eléctrico (1 o 0, prendido o apagado). A mayor cantidad de bits, mayor cantidad de caracteres que se podrán representar. Por ejemplo, un sistema de codificación de 1 bit, solo podrá representar dos caracteres: la letra “A” con un 0 y la letra “B” con un 1. ¿Puedes leer la información que estos leds están mostrando? Asume un sistema binario y exprésalo en decimal. Figura 5. Sistemas binario y decimal Fuente: [Imagen sin título sobre sistemas binario y decimal]. (s. f.). Recuperada de https://antonioldc.wordpress.com /2018/01/07/binario/ Seguramente, también estás familiarizado con el término byte, el cual es un acrónimo de binary term (término binario), o sea un grupo de 8 bits que el ordenador utiliza para representar cada símbolo o carácter que conocemos, es decir un número, una letra, un signo de puntuación, etc. Como el sistema numérico es binario (o sea representa potencias de base 2) y tiene 8 posiciones, entonces con un byte el ordenador puede representar 28=256 símbolos o caracteres diferentes. Vuelve al ejemplo de la figura 4, ¿cuántos bytes necesitarás para representar el 566770? Si codificas cada carácter decimal a través de 1 byte, entonces necesitarás 6 bytes para representar este número. Pero si el mismo número está en hexadecimal, solo necesitarás 4. Representaciones alfanuméricas Pero no solo codificamos un sistema de números en otro. Para una transmisión o procesamiento de datos, se necesita poder codificar otros elementos. Por eso el nombre genérico de “caracteres alfanuméricos”, que pueden ser letras, números, símbolos u otros caracteres que sirven para poder tener control sobre la transmisión o el procesamiento de los datos. Un ejemplo es el código ASCII (American Standard Code for Information Interchange), que utiliza 7 bits, por lo que la cantidad de caracteres máxima es 27 = 128. Este número limita la cantidad de letras y números que pueden codificarse: letras mayúsculas y minúsculas del alfabeto inglés, números decimales del 0 al 9, algunos símbolos y 33 caracteres de control. Para poder codificar un número mayor de caracteres, se implementó el denominado ASCII extendido, el cual agrega 1 bit a los 7 de ASCII. El total de 8 bits permite 256 caracteres. Actualmente, el código más usado es el Unicode, que es una tabla que asigna un código de 32 bits (o sea 232) a cada uno de los más de 50.000 mil símbolos que abarcan todos los alfabetos: europeos, ideogramas chinos, japoneses, coreanos, muchas otras formas de escritura y más de un millar de símbolos locales. El Unicode tiene 3 variantes de formatos de transformación, UTF-8, UTF-16 y UTF-32. Figura 6. Código Unicode Fuente: [Imagen sin título sobre código Unicode]. (s. f.). Recuperada https://www.slideshare.net/edisoncoimbra/1introduccin-a-las-redes-de-computadoras de Representaciones decimales Como habrás visto más arriba en los ejemplos, para poder codificar los números decimales, usar 1 bit no alcanza (solo representa 0 y 1) y usar un byte sobra (se puede representar del 0 al 9 con 4 bits, del 0000 al 1001). El medio byte es una medida un poco menos conocida de tratamiento de la información y las comunicaciones (se la llama nibble), pero es ampliamente usada en la codificación justamente porque los decimales se adecúan a este tamaño de “palabra” binaria. Existen sistemas que codifican números decimales en bloques de 4 bits. Estos son códigos de representación de números y se los denomina códigos ponderados, porque adjudican cierto peso a los 1 binarios, según la posición que ocupan en el bloque. Un ejemplo es el código decimal codificado a binario (BCD) con sus diferentes variantes: BCD puro o natural (8421): los pesos de cada bloque coinciden con los pesos en binario. 8 para el bit de mayor peso, 4 para el segundo, 2 para el tercero y 1 para el bit con menor peso. BCD exceso tres: a partir del BCD puro, debe sumarse un 3 binario a cada cifra. BCD Aiken (2421). El nombre indica los pesos que se asignan. Veamos un ejemplo: El número decimal 15 se representa con un byte en binario puro como “00001111”. En cambio, utilizando BCD 8421, su byte codificado es “00010101”, pues procede de la siguiente conversión. Figura 7. Conversión BCD Fuente: elaboración propia. Si hacemos la conversión utilizando BCD exceso 3, entonces el decimal 15 se codificará como “01001000”. Figura 8. Conversión BCD Fuente: elaboración propia. Por último, si convertimos usando BCD 2421, es similar al 8421 pero con distinto peso en el valor del bit más significativo. Sin embargo, hay que tener precaución porque si bien del 0 al 4 los códigos son los mismos que el binario puro o el BCD 8421, a partir del 5 lo que hacemos es invertir el complemento a 9 de ese número. Es decir, en el caso del 5, su complemento a 9 es = 4, por lo tanto, si 4 es “0100” entonces el 5 será “1011”. Esta conversión me dará para el decimal 15 un valor de “00011011”. Figura 9. Conversión BCD Fuente: elaboración propia. El motivo para estas conversiones de sistemas es simplificar las operaciones matemáticas entre números (sobre todo binarios) que son la base del procesamiento digital. C O NT I NU A R LECCIÓN 2 de 2 Referencias Vilchis, A. (28 de enero de 2020). A NASA le costó millones (y una sonda) no saber convertir de pies a metros. VIX. Recuperado de https://www.vix.com/es/ciencia/223040/a-la-nasa-le-costo-millones-y-unasonda-no-saber-convertir-de-pies-a-metros#:~:text=%22Mars%20 Climate%20Orbiter%22%20(MCO,exterior%20no%20complicaron%20el%20viaje [Imagen sin título sobre sistemas binario y decimal]. (s. f.). Recuperada de https://antonio ldc.wordpress.com/2018/01/07/binario/ [Imagen sin título sobre sistema decimal I]. (s. f.). Recuperada de https://antonio decimal II]. (s. f.). Recuperada de https://antonio hexadecimal]. (s. f.). Recuperada de https://antonio ldc.wordpress.com/2018/01/07/binario/ [Imagen sin título sobre sistema ldc.wordpress.com/2018/01/07/binario/ [Imagen sin título sobre sistema ldc.wordpress.com/2018/01/07/binario/ [Imagen sin título sobre código Unicode]. (s. f.). net/edisoncoimbra/1introduccin-a-las-redes-de-computadoras C O NT I NU A R Recuperada de https://www.slideshare.