La mejor respuesta h2 >
Sí, la hay.
La parte inferior del rango de 8 bits está reservada para códigos de control. En particular, 00000000 no se puede asignar a un carácter textual, porque desea que una tarjeta perforada en blanco signifique , bueno… nada. Además, es bueno poder eliminar un error marcando una fila completa, por lo que 11111111 se asigna al código de control DELETE y, combinado con el hecho de que los caracteres de texto deben caber en 7 bits para compatibilidad con versiones anteriores, eso significa el extremo superior del rango también se reserva para los códigos de control.
Por lo tanto, los caracteres alfabéticos tienen que ir en algún lugar intermedio. Sería conveniente si pudiera convertir entre mayúsculas y minúsculas volteando un solo bit, lo que significa que los caracteres en mayúsculas y minúsculas deben estar separados por un intervalo de 32 (la potencia más pequeña de dos mayores a 26). También es conveniente si las letras dentro de un caso son contiguas, con signos de puntuación agrupados al final, en los 6 puntos de código que le quedan en cada rango de 32 caracteres, y si la secuencia de puntos de código para los caracteres alfabéticos coincide con su orden alfabético tradicional. Sería aún más conveniente si pudiera convertir un carácter alfabético en su posición alfabética numérica con una simple máscara de bits.
Todo eso limita severamente las posibilidades de dónde puede comenzar los caracteres alfabéticos. De ese rango limitado de posibilidades, se eligió 65, o 0100001, para A, y 97, o 01100001, fue elegido para a (en lugar de, digamos, al revés) por razones históricas, para mantener al revés compatibilidad con los antiguos sistemas de texto de solo mayúsculas de 5 bits, en los que a A se le asigna de hecho el punto de código 1 (00001), lo que permite la conversión entre codificaciones mediante la simple adición o truncamiento de un prefijo.
Respuesta
¿Qué «alfabeto binario»? ¿Te refieres a ASCII? Porque si lo hace, entonces «a» no es igual a 0100 0001. Una «A» mayúscula es equivalente a 0100 0001. El carácter ASCII para «a» es 0110 0001. Mientras que si desea escribir «a» en EBCDIC, para ejemplo, entonces sería 1000 0001, y A sería 1100 0001.
Los primeros 32 caracteres de la tabla ASCII son caracteres de control que no se imprimen y que se usaron originalmente para controlar el hardware, por ejemplo, 0000 0111 se llama BEL, porque solía hacer funcionar la campana en las antiguas máquinas de teletipo electromecánicas para las que se inventó originalmente ASCII. Los caracteres impresos solo comenzaron en ASCII decimal 33, con los caracteres de puntuación primero (!) Luego los dígitos, luego las letras mayúsculas, luego las letras minúsculas, terminando con la tecla DEL en ASCII 127, el extremo superior de los 7 bits que se usaron en ese tiempo.
Así que no, alguien no «escogió al azar una serie de números», era un estándar elaborado por la Asociación Estadounidense de Estándares (ahora ANSI) en 1960, basado en códigos telegráficos preexistentes. Ese estándar ha seguido siendo actualizado y ampliado, pero los primeros 128 caracteres y controles nunca se han cambiado.