Como controlador en IVAO, a veces asigno códigos como 0168 y luego descubro que el código no es válido. Para mí, el rango 0-9 parece más lógico. ¿Por qué tenemos que usar números octales y no decimales?
El código de transpondedor de cuatro dígitos que ingresa un piloto es un número octal en lugar de un número decimal, y en el sistema de numeración octal, solo los dígitos 0-7 son válidos.
En cuanto a por qué , internamente es en realidad un número binario de 12 bits y octal funciona muy bien ya que se puede usar como un "atajo" para ingresar grupos de tres dígitos binarios a la vez (000 - 111, que es 0-7 en octal ).
Si se diseñara hoy, con el poder de cómputo adicional y la complejidad del software disponible, sería posible usar un número decimal incluso si se almacena como binario internamente, solo para que sea más familiar. Sin embargo, en el momento en que se creó el sistema, cambiar los diales configuraba directamente el código en el hardware y hacer la conversión habría sido mucho más complejo/difícil/costoso.
En resumen, era conveniente para los ingenieros y fabricantes, y solo una rareza para los usuarios finales, por lo que lo dejaron así.
La representación octal es una forma económica de manejar números binarios pequeños
Los transpondedores de los modos A y C envían su ID mediante un tren de pulsos de portadora no modulada, que puede verse como una secuencia de bits. Hoy en día, dichos transpondedores usan 12 pulsos (los transpondedores en modo S usan una dirección de 24 bits que es diferente):
Los pulsos están etiquetados como A4-A2-A1, B4-B2-B1, C4-C2-C1 y D4-D2-D1 (intercalados en la transmisión). Están contenidos dentro de dos pulsos de trama para fines de sincronización del transmisor-receptor, y hay un pulso adicional X en el medio, siempre en 0 hoy, pero utilizado en los días de gloria como datos personalizados por los fabricantes (por ejemplo, para informar a ATC la posición de un tren de aterrizaje retráctil).
Al transpondedor se le debe decir el valor de cada bit de alguna manera. Hoy en día no sería un problema ingresar la ID como un número decimal (entre 0 y 4095), pero cuando se inventó el transpondedor, décadas antes de la llegada de los chips programables económicos, un convertidor confiable era un dispositivo costoso.
Por otro lado, no era una opción proporcionar solo los 12 valores usando los interruptores de encendido/apagado:
Muestra de interruptores en miniatura, fuente
Obviamente, los errores habrían sido numerosos, ya sea durante la transmisión vocal de la identificación o al ingresar la identificación.
La solución más simple y ampliamente utilizada cuando se trata de bits es agruparlos y asociar un solo símbolo a cada combinación posible en el grupo.
Sería bueno usar grupos con 10 combinaciones, ya tenemos los símbolos "0" a "9" para representarlos. Desafortunadamente al agrupar bits por dos, obtenemos grupos con 4 combinaciones cada uno. Si agrupamos por tres bits, los grupos tienen 8 combinaciones. Por cuatro, los grupos tienen 16 combinaciones, etc.
Debido a que estamos tratando con un número expresado en base 2, la cantidad de símbolos a usar es siempre una potencia de dos, nunca una potencia de 10. Entonces, los ingenieros no tenían otra opción en ese momento que olvidar los números decimales y usar un número impar de combinaciones. Como ejemplo, agrupemos por 2 bits y usemos letras griegas para los 4 símbolos requeridos:
Seríamos malos diseñadores para producir esto (¡excepto por una nueva versión de Airplane! ), pero tienes el principio. Para simplificar el sistema, podemos usar símbolos numéricos decimales si necesitamos como máximo 10 símbolos, y completar con letras si necesitamos más. Esto es exactamente lo que se hace cuando se escriben números en octal (grupos de 3 bits) y raíces hexadecimales (grupos de 4 bits).
Como se explica en otras excelentes respuestas, los primeros transpondedores tenían solo 6 bits para su ID, por lo que octal era la elección sensata, y las ID se presentaban como 2 cifras octales, por ejemplo, "75" para representar "111 101". Cuando se amplió la longitud de la identificación, el sistema octal permaneció en uso.
En caso de que esté interesado en los detalles de cómo se usa octal, propongo detalles a continuación.
Especificación técnica: un número binario de 12 bits y 4096 valores
La señal de radio del transpondedor para la transmisión de ID está compuesta por 12 pulsos (modos A/C) que pueden ser bajos o altos, esto permite 4096 ( ) combinaciones.
Como los pulsos tienen solo dos estados, bajo o alto, podemos referirlos directamente como un número binario de 12 bits entre 0 y 4095. Ilustremos con algunos valores:
Podemos agregar tantos 0 a la izquierda como queramos (por ejemplo, para tener 12 bits), como hacemos en decimal: 25 = 025 = 00025.
Representaciones octales y hexadecimales de números binarios
Por comodidad, solemos sustituir grupos de bits por algún equivalente para reducir el número de signos utilizados. Es común usar grupos de 3 y 4 bits:
Octal : un grupo de 3 bits puede generar 8 combinaciones, podemos reemplazar fácilmente este grupo por una sola cifra en base 8 para cubrir estas combinaciones. Radix 8 se denomina numeración " octal ".
Hexadecimal : De igual forma un grupo de 4 bits genera 16 combinaciones (el doble de combinaciones para un grupo de 3, ya que los dos valores del bit adicional se pueden asociar a todas las combinaciones de 3 bits. Podemos reemplazar los 4 bits de un agrupar por una cifra de base 16. Tal sistema se denomina numeración " hexadecimal ".
Volviendo a nuestros ejemplos, reemplazando los grupos de bits por sus equivalentes en base 8 y 16:
Seleccione qué base usar
¿Qué tenemos hasta ahora? Partimos de un número de 12 bits, agrupamos los bits ya sea por 3 o por 4, obtuvimos el valor octal (0000 a 7777) y el valor hexadecimal (000 a fff), dos representaciones de un mismo número binario.
¿Cuál es mejor en este caso? La respuesta ha sido proporcionada en otras excelentes publicaciones: Al principio solo había 6 pulsos asignados para la identificación. Lógicamente se agruparon de a 3 y se optó por octal.
Si hubiera habido 7 pulsos, probablemente se hubiera elegido la representación hexadecimal, con valores de 00 a 7f.
De radix a interruptor electromecánico
Es fácil diseñar un interruptor de rueda (rueda selectora) con 8 símbolos octales que gestione 3 interruptores reales para generar 3 señales eléctricas de encendido/apagado (bajo/alto):
Usamos la posición angular de la rueda para cerrar o abrir los tres contactos. Hay muchos diseños para hacer esto, uno es usar cepillos que giran sobre un disco con pistas conductoras impresas:
Los conmutadores proporcionan directamente el grupo binario. Al ensamblar cuatro interruptores, podríamos proporcionar al transpondedor el código de "graznido", que es la configuración binaria para los pulsos de identificación.
Es tan fácil de usar 3 ruedas hexadecimales con 4 contactos.
¿Por qué no 10 símbolos?
No podemos agrupar bits de un número binario en grupos que puedan tener exactamente 10 combinaciones. Esta propiedad está limitada a potencias de 2 radix (4, 8, 16, 32...)
Más tarde, con la introducción de los circuitos integrados (tan simples como las memorias), fue posible convertir de decimal a binario con bastante facilidad. El 74S484 ha sido uno de esos circuitos integrados. Podría manejar dos entradas que representan valores decimales (" decimal codificado en binario ", BCD) y convertirlos en binario puro. El conversor de 4 decimales (0 a 4095) se diseñaría así, utilizando 5 de estos circuitos:
Como ves, es más sencillo usar solo 8 símbolos ( ), o 16 ( ), y más generalmente una potencia de dos.
Es legítimo pensar que también podríamos usar una lógica basada en puertas booleanas simples (NAND, XOR...) para administrar la conversión de decimal a binario en lugar de una memoria. Esto no es evidente a primera vista, pero en realidad requeriría una gran cantidad de puertas.
Para convencerme, he hecho el ejercicio por un solo bit (de 12) y por solo dos ruedas decimales de 4. Eliminé los detalles del ejercicio, pero se pueden ver en el historial de edición . Aquí está el resultado:
La minimización permitió reducir el número de términos (por lo tanto, puertas) a 10. Aún así, esto es solo para un bit y dos ruedas. A veces simplemente no vale la pena la dificultad adicional, especialmente en un momento en que no había circuitos integrados, apegarse al decimal.
Ingresar códigos de graznidos en octal, o base 8 donde los dígitos permitidos son del 0 al 7, hace que la interfaz hombre-máquina entre el piloto y el transpondedor sea lo más simple posible.
Los transpondedores compatibles con el Modo A y el Modo C utilizan códigos de baliza o identidad de 12 bits. Cada bit tiene dos opciones, alto o bajo, lo que da un total de 2 12 = 4096 identificadores representables ( es decir , que caben dentro de 12 bits), que van de 0 a 4095 en base 10, escrito 4095 10 . Ahora bien, no todos los identificadores representables son válidos . Por ejemplo, 7500 8 está reservado para situaciones específicas, pero eso no es motivo de preocupación para los circuitos.
Las cantidades que caben exactamente dentro de un cierto número de bits no se alinean limpiamente con potencias de diez. Considere un transpondedor hipotético que acepta cuatro dígitos decimales del 0000 al 9999 o 10 4 = 10 000 entradas posibles. Es más probable que el piloto bloquee un graznido falso que uno representable. Esta interfaz "más simple" ahora tiene una condición de error con la que debe lidiar: entradas representables y no representables. Si el piloto teclea o hace girar los diales por encima de 4095, ¿cómo responderá el transpondedor? ¿Debe parpadear una luz de error que el piloto puede pasar por alto? ¿Cómo debería responder al interrogatorio mientras está en mal estado? Recorte silenciosamente el código de baliza a todos los bits altos (111 111 111 111 2 = 4095 10 = 7777 8)? ¿Dejar de responder por completo? Más modos significan más pruebas y más gastos.
'Ah', piensa el ingenioso ingeniero de la vieja escuela. 'No más botones elegantes; le daremos al dial más a la izquierda solo cinco posiciones, de 0 a 4.' Pero, ¿qué pasa con el segundo dial que debe ser 0 cuando el primero es 4 pero puede ser cualquier dígito de lo contrario?
Tenemos doce bits para llenar. Quizás el piloto ingresa directamente al binario. “Cessna 123AB, graznido cero-cero-uno-cero-uno-cero-cero-cero-…” Imagínese la congestión de frecuencia con instrucciones, colaciones, correcciones y confirmaciones tan largas.
Nuestra memoria a corto plazo es buena para unos siete elementos, más o menos dos . Doce dígitos binarios ("bits") son demasiado difíciles de manejar. Otros factores de 12 son 6×2 y 4×3.
Factorizar los doce bits de identidad en seis y dos significa códigos graznidos en dos cantidades de 6 bits (0-63) o seis fragmentos de 2 bits (0-3). Imagínese lidiar con diales de 64 posiciones en los viejos tiempos. Hacerlo con botones decimales nos devuelve al problema de los códigos irrepresentables. Seis diales cada uno con 0 a 3 pueden funcionar, pero eso hace que los diales sean más pequeños y obliga al piloto a manejar cerca del límite de la memoria a corto plazo, lo que hace que esta opción sea propensa a errores y, por lo tanto, menos deseable.
Podrían funcionar tres grupos de cantidades de 4 bits o hexadecimales . Aunque los valores hexadecimales varían de 0 a 15 10 , una convención común es usar dígitos del 0 al 9 y luego de la A a la F para diez a quince. En otras palabras, nos quedamos con un dígito por lugar, pero en los viejos tiempos, eso habría significado usar diales de 16 lugares. Hoy, eso significaría dieciséis botones en la parte frontal del transpondedor. Sin embargo, "¡Aproximación, Cessna tree-alpha-bravo declarando una emergencia y graznando foxtrot-charlie-zero para este charlie foxtrot!" tiene algún valor mnemotécnico.
Considerándolo de otra manera, tenemos cuatro grupos de tres bits. En binario, los valores posicionales son potencias de dos (no potencias de diez como estamos acostumbrados a pensar en decimal). Trabajando con tres bits cada uno, el valor máximo para cualquier dígito de código de baliza es
Aquí encontramos varias ventajas:
La respuesta simple es que un transpondedor de modo A o modo C permite 12 bits de datos de identificación, y tres bits pueden describirse como un dígito octal. Por lo tanto hay cuatro dígitos octales, de los cuales oscilan entre 0000 y 7777.
La pregunta ha cambiado, así que estoy complementando esta respuesta. La convención de usar números octales para códigos de transpondedores se remonta a una implementación anterior de transpondedores que tenían 6 bits de datos de identificación de aeronaves. Se decidió (creo que por algún COTR de camisa blanca) ir con dígitos octales. Tratar con computadoras, octal o hexadecimal es más fácil que decimal. Más tarde, el campo de identificación de la aeronave del transpondedor se convirtió en 12 bits y se mantuvo la convención octal. Es una convención, y se ha mantenido.
Complementario: recuerdo un transpondedor que tenía 6 interruptores de palanca para ingresar el código, antes del estándar de 12 bits. Los cambios estaban marcados por tres con 4-2-1 debajo de ellos. Antes de la alfabetización informática de las masas, una vez que se puede especular sobre la selección de dígitos, en lugar de, por ejemplo, hexadecimal, se tuvo en cuenta a medida que se desarrollaba la tecnología IFF y transpondedor. Un código de graznido VFR podría ingresarse como un 12, que tendría el 1 más significativo cambiando hacia arriba y el menos significativo 2 cambiando hacia arriba. Recuerdo que el radar secundario muestra lo mismo que 1200, aunque provenía de un transpondedor sin el estándar de 12 bits. 77, o todos los interruptores eran para emergencias, y 76 y 75, todos asignados respectivamente a los códigos modernos 7700, 7600 y 7500.
Los 12 bits fueron establecidos por la sincronización del sistema y la precisión de la tecnología de generación y procesamiento de pulsos disponible en ese momento. Habiendo configurado 12 bits, podrían haber hecho 0 a 4095, pero eso habría requerido interruptores especiales y/o engranajes para la pantalla. Entonces, para simplificar las cosas, usaron Octal con 4 interruptores simples de 8 posiciones.
En los sistemas informáticos, todo es binario. Esto se debe a que el circuito lógico solo tiene 2 estados, alto y bajo voltaje. Debido a esto, decimal no sería tan fácil de convertir a binario como lo son octal o hexadecimal.
pie
SO_fix_the_vote_sorting_bug