ASCII ha diverse proprietà interessanti oltre a quella che hai indicato. È relativamente semplice accertare le proprietà di un personaggio. Ad esempio, tutti i caratteri stampabili sono maggiori o uguali a 32 (010 0000), quindi se AND un carattere con 96 (110 0000) e ottieni zero, deve essere non stampabile. Le lettere maiuscole e minuscole differiscono di un solo bit, come notato:
A = 100 0001, OR con 010 0000 dà a = 110 0001. Lo stesso vale per tutte le altre lettere.
a = 110 0001, AND con 101 1111 dà A = 100 0001. Lo stesso vale per tutte le altre lettere.
Questo rende banale eseguire ricerche senza distinzione tra maiuscole e minuscole tramite la semplice logica bit mask. Certamente è molto più facile che con alcuni caratteri codificati in Unicode che devono essere decodificati prima nei loro punti di codice (l'ASCII a 7 bit è anche UTF-8 valido, buona fortuna con altre codifiche).
Un'altra proprietà interessante è che i numeri iniziano tutti con i bit di ordine superiore 011. Se lo vedete, e i bit successivi sono 0-9 (0000 - 1001), potete prendere quei bit e interpretarli direttamente come un numero intero.
Non posso fornire citazioni specifiche di decenni fa quando EBCDIC e ASCII erano standard in competizione, ma è risaputo nella comunità CS che ASCII è stato progettato pensando a quelle proprietà specifiche. L'idea era di essere in grado di utilizzare il bit masking e l'aritmetica un modo semplice per rilevare e manipolare attributi leggibili dagli umani di caratteri ASCII.
Molti dispositivi di anni fa erano basati sui caratteri, come stampanti e terminali. Avere un modo semplice per i dispositivi low-tech del giorno di essere in grado di decodificare e utilizzare un personaggio senza CPU è stato un po 'difficile.